【发布时间】:2019-01-16 18:30:50
【问题描述】:
我想像这样对一个名为 imageList 的 ArrayList 进行排序:
Collections.sort(imageList, new MapComparator(Function.KEY_TIMESTAMP, "dsc"));
这很好用,但现在出于性能原因,我希望能够设置一个限制(仅显示最新的 100 张图像,其中 ArrayList 未排序,因此简单地创建子列表将不起作用)。
我的 MapComparator 类如下所示:
class MapComparator implements Comparator<HashMap<String, String>>
{
private final String key;
private final String order;
public MapComparator(String key, String order)
{
this.key = key;
this.order = order;
}
public int compare(HashMap<String, String> first,
HashMap<String, String> second)
{
String firstValue = first.get(key);
String secondValue = second.get(key);
if(this.order.toLowerCase().contentEquals("asc"))
{
return firstValue.compareTo(secondValue);
}else{
return secondValue.compareTo(firstValue);
}
}
}
有人知道如何实现吗? 提前致谢!
【问题讨论】:
-
您只想对数组列表中的最后 100 个项目进行排序?
-
一般来说,不要在比较器中构建诸如颠倒顺序之类的东西。只需使用比较器接口上的
reversed()方法来颠倒顺序即可。 -
@AndrewTobilko 你一定要看看整个系列;不过,您不必对整个集合进行排序。
标签: java collections comparator