[英]Sort a list with a element still in last position
我有包含数据的对象列表。 当我进行排序时,我希望特定对象单独留在列表中。 但它现在最先出现。
当前的:
存档
应用
运行时间等
嵌入式组件 IDE -
调试、编译和构建工具
初始化/引导/设备驱动程序
必需的
应用
运行时等
嵌入式组件 IDE -
调试、编译和构建工具
初始化/引导/设备驱动程序
存档
Collections.sort(existingList,new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1,Map<String, Object> o2) {
String archiveCheck = (String)o1.get("name");
if(archiveCheck.equalsIgnoreCase("Archived"))
return -10000;
else
return ((String) o1.get("name")).compareTo((String) o2.get("name"));
}
});
只要o1
被Archived
,就返回正值
Collections.sort(existingList ,new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1,Map<String, Object> o2) {
String name1 = (String)o1.get("name");
String name2 = (String)o2.get("name");
if(name1.equalsIgnoreCase("Archived"))
return 1;
if(name2.equalsIgnoreCase("Archived"))
return -1;
return name1.compareTo(name2);
}
});
编辑我们必须检查比较器中两个参数的Archived
值。 更新了答案。 因此,如果第二个参数匹配存档,则返回负值
一个简单的解决方案可能是从列表中删除要保留在最后的元素(或者不首先添加它),使用默认比较器对列表进行排序,然后在末尾添加该元素。
最简单的事情,但没有你可能需要的那么有效,我想到的是关于
original list
- "Archived"
复制到一些temp
文件,所有其他复制到newList
..Sort newList
,并为最后插入"Archived"
对象(临时)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.