首页 文章

使用数字对String ArrayList进行排序的最佳方法

提问于
浏览
0

我有一个以这种风格设置的数组列表......

  • 4只狗

  • 10只猫

  • 2只狗

我想对它进行排序,以便ArrayList按顺序排列......

  • 1只狗

  • 4只狗

  • 10只猫

在不使用比较器或其他方法的情况下,通过取出数字(将字符串除以空格“?”),比较它们,并将排序后的结果放回ArrayList,对这些进行排序的最简单,最简单的方法是什么?如果您可以附加您的代码段,那将非常感激 .

3 回答

  • 2

    最简单的方法是使用比较器:

    Collections.sort(list, new Comparator<String>() {
        public void compare(String one, String two) {
             return getNumber(one) - getNumber(two);
        }
        private int getNumber(String str) {
            return Integer.parseInt(one.split(" ")[0]);
        }
    }
    

    我真的不知道什么可以更简单 .

  • 1

    如果没有显式的Comparator,请尝试使用Java 8的Lambda功能:

    //Assuming that the list variable is a string that looks like e.g. "1 10 2 5"
    
    Arrays.sort(list.split(" "), 
        (String a, String b) -> { return Integer.valueOf(a).compareTo(Integer.valueOf(b)) }; 
    );
    
    //Assuming that the list variable is an array list of Strings
    
    Collections.sort(list, 
        (String a, String b) -> { return Integer.valueOf(a).compareTo(Integer.valueOf(b)) }; 
    );
    
  • 5

    您需要在该类中创建一个具有 String 字段的类,并实现 compareTo 方法并编写比较逻辑 .

    ArrayList 中使用此类对象,然后使用 Collections.sort 方法 .

相关问题