Java字符串排序中文和数字的方法
- java语言
- 关注:2.78W次
在Java中,排序需要复写的是 equals 方法 和 Comparable 接口 的public int compareTo(T o);。下面是小编为大家带来的Java字符串排序中文和数字的方法,欢迎阅读。
方法步骤:
1. 使用正则表达式来判断数字,多个连续的数字作为一组,
2. 一次检索出数字组合,
3. 检出下一组数字,如果有,则进入步骤4,否则进入步骤6.
4. 如果两组数字出现的位置相等,并且前面部分的字符串相等,则进入第5步。否则break,跳到第6步.
5. 如果前面部分的字符串完全一致。则比较两个数字的大小,如果大小一致,则进入下一组,即步骤3.如果大小不一致,则可以比对出来大小,比较结束
6. 调用String的compareTo方法,病返回(流程结束)。
完整的'代码如下:
import yList;
import ections;
import ;
import her;
import ern;
//包装器类
public class OrderWrapper implements Comparable{
String name = null;
public OrderWrapper(String name){
= name;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
@Override
public String toString() {
return eOf(name);
}
@Override
public boolean equals(Object obj) {
if(obj == this){
return true;
}
if(obj instanceof OrderWrapper){
OrderWrapper other = (OrderWrapper)obj;
if(null == ){
return false;
} else {
return ls();
}
}
return false;
}
// 比较方法,相当于减法。 (return this - wrapper)
public int compareTo(OrderWrapper wrapper) {
if(null == wrapper){
return 1;
}
// 直接相等
if(this == wrapper || ls(wrapper)){
return 0;
}
String name1 = ;
String name2 = ;
// 特殊情形,name有一个为空的情况.
if(null == name1){
// 都为空,认为相对
if(null == name2){
return 0;
} else {
return -1;
}
} else if(null == name2){
return 1;
}
// 中间 1-多个数字
Pattern pattern = ile("D*(d+)D*");
Matcher matcher1 = her(name1);
Matcher matcher2 = her(name2);
//tln(ern());
//
int index1_step = 0;
int index2_step = 0;
while(()){
String s1 = p(1);
String s2 = null;
if(()){
s2 = p(1);
}
int index1 = xOf(s1, index1_step);
int index2 = xOf(s2, index2_step);
//
index1_step = index1;
index2_step = index2;
// 索引相等的情况下
if(index1 == index2){
tln("name1="+th()+"nname2="+th());
tln("index1="+index1+",index2="+index2);
String pre1 = tring(0, index1);
String pre2 = tring(0, index2);
if(ls(pre2)){
//
long num1 = eLong(s1);
long num2 = eLong(s2);
//
if(num1 == num2){
// 比较下一组
continue;
} else {
return (int)(num1 - num2);
}
} else {
break;
}
} else {
break;
}
}
// 最后的情形.
return areTo();
}
public static void testNew(){
List chinesesOrderList = new ArrayList();
(new OrderWrapper("我们80后相亲奇遇记3"));
(new OrderWrapper("他80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("啊80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("我80后相亲奇遇记3"));
(new OrderWrapper("a80后相亲奇遇记3"));
//Collator collatorChinese = nstance(A);
//collatorChinese = nstance(ESE);
// (chinesesOrderList, collatorChinese);
(chinesesOrderList);
tln("中文+数字排序: = ");
for (int i = 0; i < (); i++) {
OrderWrapper chinese = (i);
tln("" + chinese);
}
}
public static void main(String[] args) {
testNew();
}
}
- 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/java/g664d.html