我有一个以这种风格设置的数组列表...
我想对它进行排序,以便ArrayList的顺序为......
不使用比较器或其他方法,通过取出数字(将字符串除以空格“?”),比较它们,并将排序后的结果放回ArrayList,对这些进行排序的最简单,最简单的方法是什么? ?如果您可以附加您的代码段,我们将非常感激。
答案 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
方法。