首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用仍处于最后位置的元素对列表进行排序

使用仍处于最后位置的元素对列表进行排序
EN

Stack Overflow用户
提问于 2016-01-11 08:21:51
回答 3查看 1.7K关注 0票数 2

我有带有数据的对象列表。我希望在进行排序时,只有特定的对象才能保持在列表的最后。但现在第一次出现了。

出席:

归档

应用程序

运行时间等

嵌入式组件IDE -

调试、编译和生成工具

初始化/启动/设备驱动程序

必填项

应用程序

运行时间等

嵌入式组件IDE -

调试、编译和生成工具

初始化/启动/设备驱动程序

归档

代码语言:javascript
运行
复制
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"));
  }
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-11 08:23:49

只要在o1Archived时返回正值

代码语言:javascript
运行
复制
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值。更新了答案。因此,如果第二个参数匹配存档,则返回负值。

票数 5
EN

Stack Overflow用户

发布于 2016-01-11 08:23:51

一个简单的解决方案可以是从列表中删除要保持最后的元素(或者不首先添加它),用默认的比较器对列表进行排序,然后在末尾添加元素。

票数 3
EN

Stack Overflow用户

发布于 2016-01-11 09:21:46

最简单的事情,但不像你可能需要的那样有效,我想到的是

  • 要迭代original list- "Archived"复制到某个temp,所有其他副本都复制到newList
  • Sort newList,最后插入"Archived"对象(temp)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34716885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档