是否可以在忽略每个字符串中的前 3 个字符的同时对数组列表进行排序?
Is it possible to sort a an array list while ignoring the first 3 characters in each string?
我想知道如何按字母顺序对列表进行排序,通常这很容易,但我需要忽略列表中每个字符串的前 5 个字符。 (它们是数字 IDS)
ArrayList<String> tempList = new ArrayList<String>();
for(String s : AddressBook){
tempList.add(s);
Collections.sort(tempList );
}
System.out.println(tempList);
您可以通过提供自己的比较器实现来实现。
Collections.sort (tempList, new Comparator<String>() {
public int compare(String o1, String o2)
{
String sub1 = o1.substring (3);
String sub2 = o2.substring (3);
return sub1.compareTo (sub2);
}
});
是的,这在 Java 8:
中相当微不足道
Collections.sort(list, Comparator.comparing(s -> s.subString(4));
此答案适用于 Java8,通过使用 lambda 表达式提高性能和可读性。
您可能需要应用特殊的字符串长度检查(如果您的实施提供短于 6 个字符的字符串)。
Collections.sort (tempList, (o1, o2) -> o1.substring(5).compareTo(o2.substring(5)));
我想知道如何按字母顺序对列表进行排序,通常这很容易,但我需要忽略列表中每个字符串的前 5 个字符。 (它们是数字 IDS)
ArrayList<String> tempList = new ArrayList<String>();
for(String s : AddressBook){
tempList.add(s);
Collections.sort(tempList );
}
System.out.println(tempList);
您可以通过提供自己的比较器实现来实现。
Collections.sort (tempList, new Comparator<String>() {
public int compare(String o1, String o2)
{
String sub1 = o1.substring (3);
String sub2 = o2.substring (3);
return sub1.compareTo (sub2);
}
});
是的,这在 Java 8:
中相当微不足道Collections.sort(list, Comparator.comparing(s -> s.subString(4));
此答案适用于 Java8,通过使用 lambda 表达式提高性能和可读性。
您可能需要应用特殊的字符串长度检查(如果您的实施提供短于 6 个字符的字符串)。
Collections.sort (tempList, (o1, o2) -> o1.substring(5).compareTo(o2.substring(5)));