package com.allen.es.demo.service;
import java.text.Collator;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class OrderWrapper implements Comparable {
String name;
public OrderWrapper(String name) {
this.name = name;
}
@Override
public String toString() {
return String.valueOf(name);
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof OrderWrapper) {
OrderWrapper other = (OrderWrapper) obj;
return null == this.name ? false : this.name.equals(other.name);
}
return false;
}
@Override
public int compareTo(Object o) {
OrderWrapper wrapper = (OrderWrapper) o;
if (null == wrapper) {
return 1;
}
if (this == wrapper || this.equals(wrapper)) {
return 0;
}
String name1 = this.name;
String name2 = wrapper.name;
if (null == name1) {
return null == name2 ? 0 : -1;
} else if (null == name2) {
return 1;
}
Pattern pattern = Pattern.compile("\\D*(\\d+)\\D*");
Matcher matcher1 = pattern.matcher(name1);
Matcher matcher2 = pattern.matcher(name2);
int index1 = 0;
int index2 = 0;
while (matcher1.find()) {
String s1 = matcher1.group(1);
String s2;
if (matcher2.find()) {
s2 = matcher2.group(1);
} else {
break;
}
index1 = name1.indexOf(s1, index1);
index2 = name2.indexOf(s2, index2);
if (index1 != index2) {
break;
}
String pre1 = name1.substring(0, index1);
String pre2 = name2.substring(0, index2);
if (!Objects.equals(pre1, pre2)) {
break;
}
long num1 = Long.parseLong(s1);
long num2 = Long.parseLong(s2);
if (num1 == num2) {
name1 = name1.substring(s1.length());
name2 = name2.substring(s2.length());
continue;
} else {
return (int) (num1 - num2);
}
}
return Collator.getInstance(Locale.CHINA).compare(this.name, wrapper.name);
}
public static void testNew() {
List<OrderWrapper> chinesesOrderList = new ArrayList();
chinesesOrderList.add(new OrderWrapper("【】"));
chinesesOrderList.add(new OrderWrapper("【2】你是1"));
chinesesOrderList.add(new OrderWrapper("【1】你是111"));
chinesesOrderList.add(new OrderWrapper("【1】你是22吗"));
chinesesOrderList.add(new OrderWrapper("【1】你是11吗"));
chinesesOrderList.add(new OrderWrapper("【1】你是2吗"));
chinesesOrderList.add(new OrderWrapper("【1】你是1吗"));
chinesesOrderList.add(new OrderWrapper("【1】你是1"));
chinesesOrderList.add(new OrderWrapper("allen测试文件"));
chinesesOrderList.add(new OrderWrapper("2023-30-10-10"));
chinesesOrderList.add(new OrderWrapper("2023-30-10-0"));
chinesesOrderList.add(new OrderWrapper("2023-3-10"));
chinesesOrderList.add(new OrderWrapper("2023-030-10"));
chinesesOrderList.add(new OrderWrapper("22"));
chinesesOrderList.add(new OrderWrapper("11"));
chinesesOrderList.add(new OrderWrapper("2"));
chinesesOrderList.add(new OrderWrapper("1"));
chinesesOrderList.add(new OrderWrapper("##"));
chinesesOrderList.add(new OrderWrapper("[]"));
chinesesOrderList.add(new OrderWrapper("--"));
Collections.sort(chinesesOrderList);
for (int i = 0; i < chinesesOrderList.size(); i++) {
OrderWrapper chinese = chinesesOrderList.get(i);
System.out.println("" + chinese);
}
}
public static void main(String[] args) {
testNew();
}
}
"D:\Program Files\Java\jdk1.8.0_221\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar=51979:D:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;D:\liuhailun\work\demo\target\classes;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-data-elasticsearch\2.7.4\spring-boot-starter-data-elasticsearch-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter\2.7.4\spring-boot-starter-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.4\spring-boot-starter-logging-2.7.4.jar;C:\Users\Administrator\.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;C:\Users\Administrator\.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;C:\Users\Administrator\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\Administrator\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\Administrator\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\Administrator\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\Administrator\.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;C:\Users\Administrator\.m2\repository\org\springframework\data\spring-data-elasticsearch\4.4.3\spring-data-elasticsearch-4.4.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-context\5.3.23\spring-context-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-tx\5.3.23\spring-tx-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\data\spring-data-commons\2.7.3\spring-data-commons-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\client\elasticsearch-rest-high-level-client\7.17.6\elasticsearch-rest-high-level-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch\7.17.6\elasticsearch-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-core\7.17.6\elasticsearch-core-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-secure-sm\7.17.6\elasticsearch-secure-sm-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-x-content\7.17.6\elasticsearch-x-content-7.17.6.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-smile\2.13.4\jackson-dataformat-smile-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.13.4\jackson-dataformat-yaml-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-cbor\2.13.4\jackson-dataformat-cbor-2.13.4.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-geo\7.17.6\elasticsearch-geo-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-lz4\7.17.6\elasticsearch-lz4-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\lz4\lz4-java\1.8.0\lz4-java-1.8.0.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-core\8.11.1\lucene-core-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-analyzers-common\8.11.1\lucene-analyzers-common-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-backward-codecs\8.11.1\lucene-backward-codecs-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-grouping\8.11.1\lucene-grouping-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-highlighter\8.11.1\lucene-highlighter-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-join\8.11.1\lucene-join-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-memory\8.11.1\lucene-memory-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-misc\8.11.1\lucene-misc-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-queries\8.11.1\lucene-queries-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-queryparser\8.11.1\lucene-queryparser-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-sandbox\8.11.1\lucene-sandbox-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-spatial3d\8.11.1\lucene-spatial3d-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\apache\lucene\lucene-suggest\8.11.1\lucene-suggest-8.11.1.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-cli\7.17.6\elasticsearch-cli-7.17.6.jar;C:\Users\Administrator\.m2\repository\net\sf\jopt-simple\jopt-simple\5.0.2\jopt-simple-5.0.2.jar;C:\Users\Administrator\.m2\repository\com\carrotsearch\hppc\0.8.1\hppc-0.8.1.jar;C:\Users\Administrator\.m2\repository\joda-time\joda-time\2.10.10\joda-time-2.10.10.jar;C:\Users\Administrator\.m2\repository\com\tdunning\t-digest\3.2\t-digest-3.2.jar;C:\Users\Administrator\.m2\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;C:\Users\Administrator\.m2\repository\net\java\dev\jna\jna\5.10.0\jna-5.10.0.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\elasticsearch-plugin-classloader\7.17.6\elasticsearch-plugin-classloader-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\plugin\mapper-extras-client\7.17.6\mapper-extras-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\plugin\parent-join-client\7.17.6\parent-join-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\plugin\aggs-matrix-stats-client\7.17.6\aggs-matrix-stats-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\plugin\rank-eval-client\7.17.6\rank-eval-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\plugin\lang-mustache-client\7.17.6\lang-mustache-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\com\github\spullara\mustache\java\compiler\0.9.6\compiler-0.9.6.jar;C:\Users\Administrator\.m2\repository\co\elastic\clients\elasticsearch-java\7.17.6\elasticsearch-java-7.17.6.jar;C:\Users\Administrator\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\Administrator\.m2\repository\jakarta\json\jakarta.json-api\1.1.6\jakarta.json-api-1.1.6.jar;C:\Users\Administrator\.m2\repository\org\eclipse\parsson\parsson\1.0.0\parsson-1.0.0.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\client\elasticsearch-rest-client\7.17.6\elasticsearch-rest-client-7.17.6.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore\4.4.15\httpcore-4.4.15.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpasyncclient\4.1.5\httpasyncclient-4.1.5.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore-nio\4.4.15\httpcore-nio-4.4.15.jar;C:\Users\Administrator\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.4\jackson-core-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4\jackson-databind-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.4\jackson-annotations-2.13.4.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.4\spring-boot-starter-web-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.4\spring-boot-starter-json-2.7.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.4\jackson-datatype-jdk8-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.4\jackson-datatype-jsr310-2.13.4.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.4\jackson-module-parameter-names-2.13.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.4\spring-boot-starter-tomcat-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-web\5.3.23\spring-web-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-beans\5.3.23\spring-beans-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-webmvc\5.3.23\spring-webmvc-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-aop\5.3.23\spring-aop-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-expression\5.3.23\spring-expression-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-devtools\2.7.4\spring-boot-devtools-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot\2.7.4\spring-boot-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.4\spring-boot-autoconfigure-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-configuration-processor\2.7.4\spring-boot-configuration-processor-2.7.4.jar;C:\Users\Administrator\.m2\repository\org\projectlombok\lombok\1.18.24\lombok-1.18.24.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-core\5.3.23\spring-core-5.3.23.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-jcl\5.3.23\spring-jcl-5.3.23.jar" com.allen.es.demo.service.OrderWrapper
--
[]
##
1
2
11
22
2023-3-10
2023-030-10
2023-30-10-0
2023-30-10-10
allen测试文件
【1】你是1
【1】你是1吗
【1】你是2吗
【1】你是11吗
【1】你是22吗
【1】你是111
【2】你是1
【】
进程已结束,退出代码0