如果只是以首字母排序的話,我可以用Comparator的 compareTo方法將物件排序;
想求教在首字母相同的情況下,如何根據第二,甚至第三個字母進行進一步的排序呢?
非常感謝!!
public class Main{
public static void main(String[] args) {
var stuff = new Employee[5];
stuff[0] = new Employee("adam");
stuff[1] = new Employee("chris");
stuff[2] = new Employee("amy");
stuff[3] = new Employee("alexander");
stuff[4] = new Employee("alex");
}
}
我期望得到的順序是: adam, alex, alexander, amy, chris
再次感謝大神指點
uj5u.com熱心網友回復:
/**
* 漢字拼音排序比較器
*/
class SpellComparator implements Comparator {
public int compare(Object o1, Object o2) {
try {
// 取得比較物件的漢字編碼,并將其轉換成字串
String s1 = new String(o1.toString().getBytes("GB2312"), "ISO-8859-1");
String s2 = new String(o2.toString().getBytes("GB2312"), "ISO-8859-1");
// 運用String類的 compareTo()方法對兩物件進行比較
return s1.compareTo(s2);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
public static void main(String[] args) {
ArrayList<String> beforesort = new ArrayList<String>();
beforesort.add("adam");
beforesort.add("chris");
beforesort.add("amy");
beforesort.add("alexander");
beforesort.add("alex");
for (int i = 0; i < beforesort.size(); i++) {
System.out.println(beforesort.get(i));
}
Collections.sort(beforesort, new SpellComparator());
StringBuffer aftersort = new StringBuffer();
for (int i = 0; i < beforesort.size(); i++) {
aftersort.append(beforesort.get(i)).append(", ");
}
System.out.println(aftersort.toString());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214213.html
標籤:Java SE
