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

时间:2014-03-27 12:54:32

标签: java sorting arraylist

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

  • 4只狗
  • 10只猫
  • 2只狗

我想对它进行排序,以便ArrayList的顺序为......

  • 1只狗
  • 4只狗
  • 10只猫

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

3 个答案:

答案 0 :(得分:5)

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

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 :(得分:2)

如果没有显式的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)) }; 
);

答案 2 :(得分:1)

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

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