Java 是否可以对数组列表进行排序,同时忽略每个字符串中的前3个字符?
我正试图找出如何按字母顺序对列表进行排序,通常这将非常简单,但我需要忽略列表中每个字符串的前5个字符。(它们是数字ID)Java 是否可以对数组列表进行排序,同时忽略每个字符串中的前3个字符?,java,sorting,linked-list,Java,Sorting,Linked List,我正试图找出如何按字母顺序对列表进行排序,通常这将非常简单,但我需要忽略列表中每个字符串的前5个字符。(它们是数字ID) ArrayList tempList=new ArrayList(); for(字符串s:AddressBook){ 圣殿骑士; Collections.sort(圣殿骑士); } System.out.println(圣殿骑士); 您可以通过提供自己的比较器实现来实现 Collections.sort (tempList, new Comparator<String&
ArrayList tempList=new ArrayList();
for(字符串s:AddressBook){
圣殿骑士;
Collections.sort(圣殿骑士);
}
System.out.println(圣殿骑士);
您可以通过提供自己的比较器实现来实现
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);
}
});
Collections.sort(templast,newcomparator(){
公共整数比较(字符串o1、字符串o2)
{
字符串sub1=o1.substring(3);
字符串sub2=o2.substring(3);
返回sub1.compareTo(sub2);
}
});
是的,这在Java 8中非常简单:
Collections.sort(list, Comparator.comparing(s -> s.subString(4));
这个答案适用于Java8,通过使用lambda表达式提高了性能和可读性 您可能需要应用特殊的字符串长度检查(如果您的实现提供的字符串短于6个字符)
如果您在这里给出一些示例,那么就很容易理解您的问题。这是psedocode吗?我尝试在源代码中使用它,但我的编译器不喜欢它。Lambda表达式,您有java8,不使用java8是否可以做到这一点?我试图编译它的unix系统不喜欢这行代码。
Collections.sort(list, Comparator.comparing(s -> s.subString(4));
Collections.sort (tempList, (o1, o2) -> o1.substring(5).compareTo(o2.substring(5)));