我有值的列表如何排序列表中的第一個字母升序和最後一個字母在java中減少?
- 1alfreda
- 1alfredb
- 1alfredc
- 2benb
- 2benc
- 2benb
我要整理出來的列表作爲第一個字母升序和最後一個字母降序如此t他排序列表是
- 1alfredc
- 1alfredb
- 1alfreda
- 2benc
- 2benb
- 2bena
我如何能做到這一點在Java中? Plz的幫助。
我有值的列表如何排序列表中的第一個字母升序和最後一個字母在java中減少?
我要整理出來的列表作爲第一個字母升序和最後一個字母降序如此t他排序列表是
我如何能做到這一點在Java中? Plz的幫助。
沒有測試過,這樣的事情,應該工作。
Collections.sort(list, new Comparator<String>() {
public int compare(String e1, String e2) {
int c = new Character(e1.chartAt(0)).compareTo(e2.charAt(0));
if(c!=0)
return c;
return new Character(e2.chartAt(e2.length()-1)).compareTo(e1.charAt(e1.length()-1))
}
});
你應該在第二次比較中交換e1和e2,因爲最後一個字母應該是降序 – JohnnyAW
@JohnnyAW,謝謝。 editted。 – yavuzkavus
你可以使用Collections.sort()
然後指定Comparator
其中升序或降序。
List<String> list = new ArrayList<String>();
Collections.sort(list, new Comparator<Item>() {
@Override
public int compare(String s1, String o2) {
return s1.compareTo(s2);
}
});
它可能看起來像這樣。
public FirstLetterComparator implements Comparator<String>{
public int compare(String left, String right){
String leftFirst = left.substring(0,1);
String rightFirst = right.substring(0,1);
return left.compareTo(rightFirst) && ;
}
}
public LastLetterComparator implements Comparator<String>{
String leftLast = left.substring(left.length-2,left.length-1);
String rightLast = right.substring(right.length-2,right.length-1);
return leftLast.compareTo(rightLast);
}
List<String> yourList = new ArrayList<String>();
Collections.sort(yourList,new FirstLetterComparator());
Collections.sort(yourList,Collections.reverseOrder(new LastLetterComparator()));
有兩種不同的比較,使其保持一致,你得想想一個會是你的標準是可接受的。
只是實現自己的比較。但我認爲這個命令沒有任何意義。 「1alfreda」和「1alfreca」的情況下你做了什麼? – Danstahr
所以你只想排序第一個和最後一個字母?之間沒有什麼? 'ABA'和'AZA'是否被認爲是相等的? –