首先按长度排序数组,然后按字母顺序排序

Bri*_*ian 9 java arrays sorting

如何按长度排序数组,然后按字母顺序排序?

我有一个带有数字的东西列表,我现在得到:

Something1 Something10 Something2 Something3

虽然我想得到:

Something1 Something2 Something3 Something10

Kea*_*eks 24

public class MyComparator implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {  
      if (o1.length() > o2.length()) {
         return 1;
      } else if (o1.length() < o2.length()) {
         return -1;
      }
      return o1.compareTo(o2);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

Collections.sort(yourList, new MyComparator());
Run Code Online (Sandbox Code Playgroud)

  • @Starkey:那是可比的.这是比较器.你虽然很近. (3认同)

Luk*_*der 8

这是一个简洁的Java 8解决方案:

List<String> list = Arrays.asList("Something1", "Something10", "Something2", "Something3");
list.sort(Comparator.comparing(String::length).thenComparing(String::compareTo));
Run Code Online (Sandbox Code Playgroud)

或者,不区分大小写的版本:

list.sort(Comparator.comparing(String::length).thenComparing(String::compareToIgnoreCase));
Run Code Online (Sandbox Code Playgroud)