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



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

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新