如何在java中对列表首字母升序和最后一个字母降序进行排序?

时间:2014-03-06 10:45:53

标签: java list sorting

我有一个包含值的列表

  • 1alfreda
  • 1alfredb
  • 1alfredc
  • 2benb
  • 2benc
  • 2benb

我希望将列表整理为首字母升序和最后一个字母降序,以便排序列表为

  • 1alfredc
  • 1alfredb
  • 1alfreda
  • 2benc
  • 2benb
  • 2bena

我怎么能在java中做到这一点? Plz帮助。

3 个答案:

答案 0 :(得分:1)

没有经过测试,这样的事情应该有效。

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

答案 1 :(得分:0)

您可以使用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);
  }
});

答案 2 :(得分:0)

可能看起来像这样。

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

有两种不同的比较器可以使它保持一致,你必须考虑一个符合你标准的比较器。