我有一个数组列表,是以这种样式设置的.
我想把它分类,这样ArrayList就会按.
在不使用比较器或其他方法的情况下,通过取出数字(将字符串除以空格“?”)、比较字符串并将排序结果放回ArrayList中,哪种方法是最短、最简单的排序方法?如果您可以附加您的代码片段,这将是非常感谢的。
发布于 2014-03-27 12:57:59
最简单的方法是使用比较器:
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]);
}
}我真的不知道什么可以更简单。
发布于 2014-03-27 13:00:08
如果没有显式比较器,请尝试使用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)) };
);发布于 2014-03-27 12:58:28
您需要在该类中创建一个具有String字段的类,并实现compareTo方法和编写比较逻辑。
在ArrayList中使用这个类对象,然后使用Collections.sort方法。
https://stackoverflow.com/questions/22688296
复制相似问题