Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对元素仍处于最后位置的列表进行排序_Java_Sorting_Arraylist - Fatal编程技术网

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我们必须检查比较器中两个参数的
存档的
值。更新了答案是的是的。。谢谢:)