我有一个视频分辨率的ArrayList,看起来像这样:
"1024x768“、"800x600”、"1280x1024“等
我想根据字符串第一部分中的数值对其进行排序。也就是说,上面的代码看起来是这样的:
"800x600","1024x768","1280x1024“
有没有一种又快又脏的方法来做到这一点,我指的是用不到2-3行的代码?若否,正确的做法是甚麽?我得到的值来自一个对象,而不是我自己的对象。它确实有返回int的getWidth()和getHeight()方法。
发布于 2010-09-16 07:13:01
如果数组中的对象是具有getWidth方法的Resolution实例,则可以使用Comparator对其进行排序:
Collections.sort(resolutions, new Comparator {
public int compare(Resolution r1, Resolution r2) {
return Integer.valueOf(r1.getWidth()).compareTo(Integer.valueOf(r2.getWidth()));
}
});发布于 2010-09-16 07:03:38
正确的方法是编写一个在String上操作的比较器实现,但它要解析到第一个非数字字符。然后,它会从中创建一个int,并比较int。
然后,可以将该比较器的一个实例与列表一起传递给Collections.sort()。
发布于 2010-09-16 07:03:47
使用自定义比较器通过Collections api对ArrayList进行排序。
Collections.sort(resolutionArrayList, new ResolutionComparator())https://stackoverflow.com/questions/3722485
复制相似问题