GVKun编程网logo

好奇于CaseInsensitiveComparator的实现[重复](好奇举例)

11

本文将分享好奇于CaseInsensitiveComparator的实现[重复]的详细内容,并且还将对好奇举例进行详尽解释,此外,我们还将为大家带来关于Anincompatibleversion[1.

本文将分享好奇于CaseInsensitiveComparator的实现[重复]的详细内容,并且还将对好奇举例进行详尽解释,此外,我们还将为大家带来关于An incompatible version [1.1.29] of the APR based Apache Tomcat Native library is installed, whil...、com.intellij.util.text.CaseInsensitiveStringHashingStrategy的实例源码、com.vividsolutions.jts.geom.CoordinateSequenceComparator的实例源码、ims.core.vo.domain.PrivateInsuranceCompanyVoAssembler的实例源码的相关知识,希望对你有所帮助。

本文目录一览:

好奇于CaseInsensitiveComparator的实现[重复](好奇举例)

好奇于CaseInsensitiveComparator的实现[重复](好奇举例)

在检查的实现(CaseInsensitiveComparator它是的私有内部类)时String,我发现了奇怪的事情。

private static class CaseInsensitiveComparator        implements Comparator<String>, java.io.Serializable {    ...    public int compare(String s1, String s2) {        int n1 = s1.length();        int n2 = s2.length();        int min = Math.min(n1, n2);        for (int i = 0; i < min; i++) {            char c1 = s1.charAt(i);            char c2 = s2.charAt(i);            if (c1 != c2) {                c1 = Character.toUpperCase(c1);                c2 = Character.toUpperCase(c2);                if (c1 != c2) {                    c1 = Character.toLowerCase(c1);                    c2 = Character.toLowerCase(c2);                    if (c1 != c2) {                        // No overflow because of numeric promotion                        return c1 - c2;                    }                }            }        }        return n1 - n2;    }    ...}

我很好奇的是:在for循环中,一旦比较了大写字母,为什么还要再次比较小写字母?如果Character.toUpperCase(c1)Character.toUpperCase(c2)是不同的,是有可能,Character.toLowerCase(c1)并且Character.toLowerCase(c2)是平等的吗?

这样不能简化吗?

public int compare(String s1, String s2) {    int n1 = s1.length();    int n2 = s2.length();    int min = Math.min(n1, n2);    for (int i = 0; i < min; i++) {        char c1 = s1.charAt(i);        char c2 = s2.charAt(i);        if (c1 != c2) {            c1 = Character.toUpperCase(c1);            c2 = Character.toUpperCase(c2);            if (c1 != c2) {                // No overflow because of numeric promotion                return c1 - c2;            }        }    }    return n1 - n2;}

我错过了什么?

答案1

小编典典

有些Unicode字符的小写字母不同,但大写字母格式相同。例如希腊字母Sigma-它有两种小写形式(σ和ς,仅在单词的末尾使用),但只有一种大写形式(Σ)。

我找不到任何相反的例子,但是如果将来发生这种情况,那么当前的Java实现已经为此做好了准备。您的版本Comparator肯定可以正确处理Sigma情况。

您可以在Unicode网站上的“
案例映射常见问题”中找到更多信息。

An incompatible version [1.1.29] of the APR based Apache Tomcat Native library is installed, whil...

An incompatible version [1.1.29] of the APR based Apache Tomcat Native library is installed, whil...

问题描述

  首先,这是一个提示信息而不是报错,并不影响 Tomcat 的使用。它是建议你使用一个 Tomcat 的性能调优原生库文件 tcnative-1.dll

  几天前,我想尝试一下 Apache Tomcat 8.0 以上的版本,结果在 Eclipse 中配置 Server 时它就报错了:The Apache Tomcat installation at this directory is version 8.5.40. A Tomcat 8.0 installation is expected.。参照网友们提供的方法也解决了,但是在启动 Tomcat 服务的时候,它出现了一个问题:严重: An incompatible version [1.1.29] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]

解决方法

  1. 打开网址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/
  2. 选择 Tomcat requires version [1.2.14],即下载 tomcat-native-1.2.14-win32-bin.zip
  3. 解压后里面有 32 位和 64 位的 tcnative-1.dll 文件,根据自己 JDKTomcat 版本选择,将其复制到 JDK 的 bin 目录下,Clean... Tomcat 之后重新启动 Tomcat 服务即可。

关于 tcnative-1.dll

The Apache Tomcat Native Library provides portable API for features
not found in contemporary JDK''s. It uses Apache Portable Runtime as
operating system abstraction layer and OpenSSL for SSL networking and
allows optimal performance in production environments.

com.intellij.util.text.CaseInsensitiveStringHashingStrategy的实例源码

com.intellij.util.text.CaseInsensitiveStringHashingStrategy的实例源码

项目:intellij-ce-playground    文件:GeneralCommandLine.java   
protected void setupEnvironment(@NotNull Map<String,String> environment) {
  environment.clear();

  if (myParentEnvironmentType != ParentEnvironmentType.NONE) {
    environment.putAll(getParentEnvironment());
  }

  if (!myEnvParams.isEmpty()) {
    if (SystemInfo.isWindows) {
      THashMap<String,String> envVars = new THashMap<String,String>(CaseInsensitiveStringHashingStrategy.INSTANCE);
      envVars.putAll(environment);
      envVars.putAll(myEnvParams);
      environment.clear();
      environment.putAll(envVars);
    }
    else {
      environment.putAll(myEnvParams);
    }
  }
}
项目:tools-idea    文件:FileTypeAssocTable.java   
private FileTypeAssocTable(Map<String,T> extensionMappings,Map<String,T> exactFileNameMappings,T> exactFileNameAnyCaseMappings,List<Pair<FileNameMatcher,T>> matchingMappings) {
  myExtensionMappings = new THashMap<String,T>(extensionMappings);
  myExactFileNameMappings = new THashMap<String,T>(exactFileNameMappings);
  myExactFileNameAnyCaseMappings = new THashMap<String,T>(exactFileNameAnyCaseMappings,CaseInsensitiveStringHashingStrategy.INSTANCE) {
    @Override
    public T remove(Object key) {
      T removed = super.remove(key);
      myHasAnyCaseExactMappings = size() > 0;
      return removed;
    }

    @Override
    public T put(String key,T value) {
      T result = super.put(key,value);
      myHasAnyCaseExactMappings = true;
      return result;
    }
  };
  myMatchingMappings = new ArrayList<Pair<FileNameMatcher,T>>(matchingMappings);
}
项目:tools-idea    文件:GeneralCommandLine.java   
void setupEnvironment(final Map<String,String> environment) {
  environment.clear();

  if (myPassparentEnvironment) {
    environment.putAll(EnvironmentUtil.getEnvironmentMap());
  }

  if (!myEnvParams.isEmpty()) {
    if (SystemInfo.isWindows) {
      THashMap<String,String>(CaseInsensitiveStringHashingStrategy.INSTANCE);
      envVars.putAll(environment);
      envVars.putAll(myEnvParams);
      environment.clear();
      environment.putAll(envVars);
    }
    else {
      environment.putAll(myEnvParams);
    }
  }
}
项目:intellij-ce-playground    文件:HeaderParserRepository.java   
@NotNull
@Override
protected Map<String,HeaderParser> compute() {
  Map<String,HeaderParser> map = new THashMap<String,HeaderParser>(CaseInsensitiveStringHashingStrategy.INSTANCE);
  for (HeaderParserProvider provider : Extensions.getExtensions(HeaderParserProvider.EP_NAME)) {
    map.putAll(provider.getHeaderParsers());
  }
  return map;
}
项目:intellij-ce-playground    文件:SourceResolver.java   
@NotNull
private static ObjectIntHashMap<String> createStringIntMap(int initialCapacity) {
  if (initialCapacity == -1) {
    initialCapacity = 4;
  }
  return SystemInfo.isFileSystemCaseSensitive
         ? new ObjectIntHashMap<String>(initialCapacity)
         : new ObjectIntHashMap<String>(initialCapacity,CaseInsensitiveStringHashingStrategy.INSTANCE);
}
项目:intellij-ce-playground    文件:VfsData.java   
void addAdoptedname(String name,boolean caseSensitive) {
  if (myAdoptednames == null) {
    //noinspection unchecked
    myAdoptednames = new THashSet<String>(0,caseSensitive ? TObjectHashingStrategy.CANONICAL : CaseInsensitiveStringHashingStrategy.INSTANCE);
  }
  myAdoptednames.add(name);
}
项目:intellij-ce-playground    文件:EnvironmentUtil.java   
private static Map<String,String> getSystemEnv() {
  if (SystemInfo.isWindows) {
    return unmodifiableMap(new THashMap<String,String>(System.getenv(),CaseInsensitiveStringHashingStrategy.INSTANCE));
  }
  else {
    return System.getenv();
  }
}
项目:tools-idea    文件:EnvironmentUtil.java   
@NotNull
@Override
protected Map<String,String> compute() {
  Map<String,String> env = ourEnvironment.getValue();
  if (SystemInfo.isWindows) {
    env = Collections.unmodifiableMap(new THashMap<String,String>(env,CaseInsensitiveStringHashingStrategy.INSTANCE));
  }
  return env;
}
项目:consulo    文件:GeneralCommandLine.java   
protected void setupEnvironment(@Nonnull Map<String,String> environment) {
  environment.clear();

  if (myParentEnvironmentType != ParentEnvironmentType.NONE) {
    environment.putAll(getParentEnvironment());
  }

  if (SystemInfo.isUnix) {
    File workdirectory = getworkdirectory();
    if (workdirectory != null) {
      environment.put("PWD",FileUtil.toSystemDependentName(workdirectory.getAbsolutePath()));
    }
  }

  if (!myEnvParams.isEmpty()) {
    if (SystemInfo.isWindows) {
      THashMap<String,String> envVars = new THashMap<>(CaseInsensitiveStringHashingStrategy.INSTANCE);
      envVars.putAll(environment);
      envVars.putAll(myEnvParams);
      environment.clear();
      environment.putAll(envVars);
    }
    else {
      environment.putAll(myEnvParams);
    }
  }
}
项目:consulo    文件:VfsData.java   
void addAdoptedname(String name,caseSensitive ? TObjectHashingStrategy.CANONICAL : CaseInsensitiveStringHashingStrategy.INSTANCE);
  }
  myAdoptednames.add(name);
}
项目:consulo    文件:EnvironmentUtil.java   
private static Map<String,CaseInsensitiveStringHashingStrategy.INSTANCE));
  }
  else {
    return System.getenv();
  }
}
项目:intellij-ce-playground    文件:GeneralCommandLine.java   
public MyTHashMap() {
  super(SystemInfo.isWindows ? CaseInsensitiveStringHashingStrategy.INSTANCE : ContainerUtil.<String>canonicalStrategy());
}
项目:consulo    文件:GeneralCommandLine.java   
public MyTHashMap() {
  super(SystemInfo.isWindows ? CaseInsensitiveStringHashingStrategy.INSTANCE : ContainerUtil.<String>canonicalStrategy());
}
项目:consulo    文件:VcslogPathsIndex.java   
@Override
public int getHashCode(String value) {
  return CaseInsensitiveStringHashingStrategy.INSTANCE.computeHashCode(value);
}
项目:consulo    文件:VcslogPathsIndex.java   
@Override
public boolean isEqual(String val1,String val2) {
  return CaseInsensitiveStringHashingStrategy.INSTANCE.equals(val1,val2);
}

com.vividsolutions.jts.geom.CoordinateSequenceComparator的实例源码

com.vividsolutions.jts.geom.CoordinateSequenceComparator的实例源码

项目:GeoSpark    文件:Circle.java   
@Override
protected int comparetoSameClass(Object other,CoordinateSequenceComparator comp) {
    Envelope env = (Envelope) other;
    Envelope mbr = this.MBR;
    // compare based on numerical ordering of ordinates
    if (mbr.getMinX() < env.getMinX()) return -1;
    if (mbr.getMinX() > env.getMinX()) return 1;
    if (mbr.getMinY() < env.getMinY()) return -1;
    if (mbr.getMinY() > env.getMinY()) return 1;
    if (mbr.getMaxX() < env.getMaxX()) return -1;
    if (mbr.getMaxX() > env.getMaxX()) return 1;
    if (mbr.getMaxY() < env.getMaxY()) return -1;
    if (mbr.getMaxY() > env.getMaxY()) return 1;
    return 0;
}
项目:jts    文件:WKBTest.java   
void runGeometry(Geometry g,int dimension,int byteOrder,boolean toHex,int srid)
    throws IOException,ParseException
{
  boolean includeSRID = false;
  if (srid >= 0) {
    includeSRID = true;
    g.setSRID(srid);
  }

  WKBWriter wkbWriter = new WKBWriter(dimension,byteOrder,includeSRID);
  byte[] wkb = wkbWriter.write(g);
  String wkbHex = null;
  if (toHex)
    wkbHex = WKBWriter.toHex(wkb);

  if (toHex)
    wkb = WKBReader.hexToBytes(wkbHex);
  Geometry g2 = wkbReader.read(wkb);

  CoordinateSequenceComparator comp = (dimension == 2) ? comp2 : comp3;
  boolean isEqual = (g.compareto(g2,comp) == 0);
  assertTrue(isEqual);

  if (includeSRID) {
    boolean isSRIDEqual = g.getSRID() == g2.getSRID();
    assertTrue(isSRIDEqual);
  }
}
项目:gama    文件:DynamicLinestring.java   
@Override
protected int comparetoSameClass(final Object o,final CoordinateSequenceComparator comp) {
    final DynamicLinestring line = (DynamicLinestring) o;
    return comp.compare(getCoordinateSequence(),line.getCoordinateSequence());
}

ims.core.vo.domain.PrivateInsuranceCompanyVoAssembler的实例源码

ims.core.vo.domain.PrivateInsuranceCompanyVoAssembler的实例源码

项目:AvoinApotti    文件:ADTImpl.java   
public PrivateInsuranceCompanyVo getPrivateInsuranceCompany(String extId,TaxonomyType taxonomyType)
{
    if (extId == null || taxonomyType == null)
        return null;

    DomainFactory factory = getDomainFactory();
    String hql = " from PrivateInsuranceCompany company " +
    " join company.codeMappings as cm" +
    " where cm.taxonomyName = :taxType " + 
    " and cm.taxonomyCode = :extId ";

    List<?> companyList = factory.find(hql,new String[]{"taxType","extId"},new Object[]{getDomLookup(taxonomyType),extId});

    if (companyList != null && companyList.size() > 0)
    {
        PrivateInsuranceCompany company = (PrivateInsuranceCompany)companyList.get(0);
        return PrivateInsuranceCompanyVoAssembler.create(company);
    }
    return null;
    }
项目:openMAXims    文件:PrivateInsuranceCompaniesImpl.java   
/**
* Retrieves a PrivateInsuranceCompanyVo
*/
public ims.core.vo.PrivateInsuranceCompanyVoCollection listPrivateInsuranceCompanyVo(Boolean active)
{
    ArrayList names = new ArrayList();
    ArrayList values = new ArrayList();

    DomainFactory factory = getDomainFactory();
    StringBuffer hql = new StringBuffer("from PrivateInsuranceCompany pic ");

    if (active.equals(Boolean.TRUE))
    {
        hql.append (" where pic.isActive = :isActive");
        names.add("isActive");
        values.add(Boolean.TRUE);   
    }

    hql.append(" order by pic.upperName asc"); //WDEV-20219 upper(pic.name)

    List list = factory.find(hql.toString(),names,values);
    return(PrivateInsuranceCompanyVoAssembler.createPrivateInsuranceCompanyVoCollectionFromPrivateInsuranceCompany(list));
}
项目:openMAXims    文件:PrivateInsuranceCompaniesImpl.java   
/**
    * Saves a PrivateInsuranceCompanyVo
    */
    public ims.core.vo.PrivateInsuranceCompanyVo savePrivateInsuranceCompanyVo(ims.core.vo.PrivateInsuranceCompanyVo privateInsuranceCompanyVo) throws ims.domain.exceptions.StaleObjectException
    {
//       Check for value to save
        if (privateInsuranceCompanyVo == null)
            throw new DomainRuntimeException("Domain Error - Can not save a null privateInsuranceCompanyVo record");

        // Check for validated record
        if (!privateInsuranceCompanyVo.isValidated())
            throw new DomainRuntimeException("Domain Error - privateInsuranceCompanyVo record must be validated before save");

        DomainFactory factory = getDomainFactory();
        PrivateInsuranceCompany privateInsuranceCompany = PrivateInsuranceCompanyVoAssembler.extractPrivateInsuranceCompany(factory,privateInsuranceCompanyVo);
        privateInsuranceCompany.getCodeMappings().clear();

        List mappings = TaxonomyMapAssembler.extractTaxonomyMapList(factory,privateInsuranceCompanyVo.getCodeMappings());
        privateInsuranceCompany.setCodeMappings(mappings);
        factory.save(privateInsuranceCompany);

        privateInsuranceCompanyVo = PrivateInsuranceCompanyVoAssembler.create(privateInsuranceCompany);

        return privateInsuranceCompanyVo;
    }
项目:openMAXims    文件:ADTImpl.java   
public PrivateInsuranceCompanyVo getPrivateInsuranceCompany(String extId,extId});

    if (companyList != null && companyList.size() > 0)
    {
        PrivateInsuranceCompany company = (PrivateInsuranceCompany)companyList.get(0);
        return PrivateInsuranceCompanyVoAssembler.create(company);
    }
    return null;
    }
项目:openmaxims-linux    文件:ADTImpl.java   
public PrivateInsuranceCompanyVo getPrivateInsuranceCompany(String extId,extId});

    if (companyList != null && companyList.size() > 0)
    {
        PrivateInsuranceCompany company = (PrivateInsuranceCompany)companyList.get(0);
        return PrivateInsuranceCompanyVoAssembler.create(company);
    }
    return null;
    }
项目:openMAXims    文件:InsuranceDetailsInDemographicsCCImpl.java   
public ims.core.vo.PrivateInsuranceCompanyVoCollection listPrivateInsuranceCompanyVo()
{
    DomainFactory factory = getDomainFactory();
    String query = "select p1_1 from PrivateInsuranceCompany as p1_1 where (p1_1.isActive = 1) order by p1_1.upperName asc ";
    List<?> privateInsuranceComp = factory.find(query);

    if( privateInsuranceComp != null && privateInsuranceComp.size() > 0)
    {
         return PrivateInsuranceCompanyVoAssembler.createPrivateInsuranceCompanyVoCollectionFromPrivateInsuranceCompany(privateInsuranceComp);
    }

    return null;
}
项目:openMAXims    文件:PDSDemographicsImpl.java   
@Override
public PrivateInsuranceCompanyVoCollection listPrivateInsuranceCompanyVo()
{
    DomainFactory factory = getDomainFactory();
    String query = "select p1_1 from PrivateInsuranceCompany as p1_1 where (p1_1.isActive = 1) order by p1_1.upperName asc ";
    List<?> privateInsuranceComp = factory.find(query);

    if( privateInsuranceComp != null && privateInsuranceComp.size() > 0)
    {
         return PrivateInsuranceCompanyVoAssembler.createPrivateInsuranceCompanyVoCollectionFromPrivateInsuranceCompany(privateInsuranceComp);
    }

    return null;
}
项目:openMAXims    文件:PrivateInsuranceCompaniesImpl.java   
/**
* getPrivateInsuranceCompanyVo
*/
public ims.core.vo.PrivateInsuranceCompanyVo getPrivateInsuranceCompanyVo(ims.core.configuration.vo.PrivateInsuranceCompanyRefVo privateInsuranceCompanyRefVo)
{
    if (privateInsuranceCompanyRefVo == null || !privateInsuranceCompanyRefVo.getID_PrivateInsuranceCompanyIsNotNull())
        return null;
    PrivateInsuranceCompany pim = (PrivateInsuranceCompany) getDomainFactory().getDomainObject(PrivateInsuranceCompany.class,privateInsuranceCompanyRefVo.getID_PrivateInsuranceCompany());
    return PrivateInsuranceCompanyVoAssembler.create(pim);
}
项目:openMAXims    文件:PatientMedicalInsuranceImpl.java   
public PrivateInsuranceCompanyVoCollection listCompanies() {
    ArrayList names = new ArrayList();
    ArrayList values = new ArrayList();

    DomainFactory factory = getDomainFactory();
    StringBuffer hql = new StringBuffer("from PrivateInsuranceCompany pic ");

    hql.append (" where pic.isActive = :isActive");
    names.add("isActive");
    values.add(Boolean.TRUE);   

    List list = factory.find(hql.toString(),values);
    return(PrivateInsuranceCompanyVoAssembler.createPrivateInsuranceCompanyVoCollectionFromPrivateInsuranceCompany(list).sort());
}
项目:openMAXims    文件:InsuranceDetailsCCImpl.java   
public PrivateInsuranceCompanyVoCollection listPrivateInsuranceCompanyVo()
{
    DomainFactory factory = getDomainFactory();
    String query = "select p1_1 from PrivateInsuranceCompany as p1_1 where (p1_1.isActive = 1) order by p1_1.upperName asc ";
    List<?> privateInsuranceComp = factory.find(query);

    if( privateInsuranceComp != null && privateInsuranceComp.size() > 0)
    {
         return PrivateInsuranceCompanyVoAssembler.createPrivateInsuranceCompanyVoCollectionFromPrivateInsuranceCompany(privateInsuranceComp);
    }

    return null;
}

我们今天的关于好奇于CaseInsensitiveComparator的实现[重复]好奇举例的分享就到这里,谢谢您的阅读,如果想了解更多关于An incompatible version [1.1.29] of the APR based Apache Tomcat Native library is installed, whil...、com.intellij.util.text.CaseInsensitiveStringHashingStrategy的实例源码、com.vividsolutions.jts.geom.CoordinateSequenceComparator的实例源码、ims.core.vo.domain.PrivateInsuranceCompanyVoAssembler的实例源码的相关信息,可以在本站进行搜索。

本文标签: