是否可以在忽略每个字符串中的前3个字符的同时对数组列表进行排序?

我试图弄清楚如何按字母顺序对列表进行排序,通常这很容易,但我需要忽略列表中每个字符串的前5个字符。 (它们是数字IDS)

ArrayList tempList = new ArrayList(); for(String s : AddressBook){ tempList.add(s); Collections.sort(tempList ); } System.out.println(tempList); 

是的,这在Java 8中相当简单:

 Collections.sort(list, Comparator.comparing(s -> s.subString(4)); 

您可以通过提供自己的Comparator实现来实现。

 Collections.sort (tempList, new Comparator() { public int compare(String o1, String o2) { String sub1 = o1.substring (3); String sub2 = o2.substring (3); return sub1.compareTo (sub2); } }); 

这个答案适用于Java 8,通过使用lambda表达式提高性能和可读性。

您可能需要应用特殊的字符串长度检查(如果您的实现提供的字符串短于6个字符)。

 Collections.sort (tempList, (o1, o2) -> o1.substring(5).compareTo(o2.substring(5)));