Java 对元素仍处于最后位置的列表进行排序
我有一个包含数据的对象列表。当我进行排序时,我希望特定对象单独留在列表中的最后一个。 但是现在它一开始就来了 出席: 存档Java 对元素仍处于最后位置的列表进行排序,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个包含数据的对象列表。当我进行排序时,我希望特定对象单独留在列表中的最后一个。 但是现在它一开始就来了 出席: 存档 应用程序 运行时等 嵌入式组件IDE- 调试、编译和生成工具 初始化/引导/设备驱动程序 必需的 应用程序 运行时等 嵌入式组件IDE- 调试、编译和生成工具 初始化/启动/设备驱动程序 已存档 Collections.sort(existingList,new Comparator<Map<String, Object>>() { public
应用程序
运行时等
嵌入式组件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"));
}
});
Collections.sort(existingList,new Comparator(){
公共整数比较(映射o1,映射o2){
String archiveCheck=(String)o1.get(“name”);
if(archiveCheck.equalsIgnoreCase(“存档”))
返回-10000;
其他的
return((String)o1.get(“name”).compareTo((String)o2.get(“name”));
}
});
只要在o1
存档时返回正值即可
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);
}
});
Collections.sort(existingList,new Comparator(){
公共整数比较(映射o1,映射o2){
stringname1=(String)o1.get(“name”);
stringname2=(String)o2.get(“name”);
if(名称1.equalsIgnoreCase(“存档”))
返回1;
if(名称2.equalsIgnoreCase(“存档”))
返回-1;
返回name1.compareTo(name2);
}
});
编辑
我们必须检查比较器中两个参数的
存档的值。更新了答案。因此,在第二个参数匹配归档的情况下,然后返回负值。一个简单的解决方案是从列表中删除最后保留的元素(或者不首先添加它),使用默认比较器对列表进行排序,然后在末尾添加元素。最简单的方法是,但是没有你可能需要的那么有效,我想到的是
- 要在
原始列表
-“存档”
复制到一些临时文件
,所有
其他人复制到newList
李>
对新列表进行排序
,并为最后一次插入排序
“已存档”
对象(临时)
谢谢。但是这不起作用。。实际上,它是按字母顺序排序的,“归档的”排在第二位list@NishanthGandhidoss我们必须检查比较器中两个参数的存档的值。更新了答案是的是的。。谢谢:)