我有包含数据的对象列表。当我进行排序时,我希望单独的特定对象在列表中保持最后。 但它现在就开始了。
现:
已归档
应用
运行时等
嵌入式组件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"));
}
});
答案 0 :(得分:3)
只要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
值。更新了答案。因此,如果第二个参数匹配Archived,则返回负值
答案 1 :(得分:3)
一个简单的解决方案可能是从列表中删除您想要保留的元素(或者不首先添加它),使用默认比较器对列表进行排序,然后在末尾添加元素。
答案 2 :(得分:0)
最简单的事情,但不是像你可能需要的那样有效,我想到的是关于
的想法original list
- "Archived"
复制到某些temp
,全部
其他人则复制到newList
.. Sort newList
,以及最后一次插入
"Archived"
object(temp)