对列表进行排序,其中元素仍位于最后位置

Nis*_*oss 2 java sorting arraylist

我有带有数据的对象列表。当我进行排序时,我希望仅将特定对象保留在列表的最后。但现在它首先到来了。

展示:

存档的
应用程序
运行时等
嵌入式组件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"));
  }
});
Run Code Online (Sandbox Code Playgroud)

sid*_*ate 5

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑 我们必须检查Archived比较器中两个参数的值。更新了答案。因此,如果第二个参数匹配 Archived,则返回负值