Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以对数组列表进行排序,同时忽略每个字符串中的前3个字符?_Java_Sorting_Linked List - Fatal编程技术网

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

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&

我正试图找出如何按字母顺序对列表进行排序,通常这将非常简单,但我需要忽略列表中每个字符串的前5个字符。(它们是数字ID)

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