我有带有数据的对象列表。我希望在进行排序时,只有特定的对象才能保持在列表的最后。但现在第一次出现了。
出席:
归档
应用程序
运行时间等
嵌入式组件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"));
}
});
发布于 2016-01-11 08:23:49
只要在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
值。更新了答案。因此,如果第二个参数匹配存档,则返回负值。
发布于 2016-01-11 08:23:51
一个简单的解决方案可以是从列表中删除要保持最后的元素(或者不首先添加它),用默认的比较器对列表进行排序,然后在末尾添加元素。
发布于 2016-01-11 09:21:46
最简单的事情,但不像你可能需要的那样有效,我想到的是
original list
- "Archived"
复制到某个temp
,所有其他副本都复制到newList
。Sort newList
,最后插入"Archived"
对象(temp)https://stackoverflow.com/questions/34716885
复制相似问题