我有值的列表如何排序列表中的第一个字母升序和最后一个字母在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'是否被认为是相等的? –