在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();
}
}