首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用对象名字段按字母顺序对List<Object>进行排序

如何使用对象名字段按字母顺序对List<Object>进行排序
EN

Stack Overflow用户
提问于 2011-12-08 22:32:52
回答 14查看 203.3K关注 0票数 107

我有一个像List<Object> p.I这样的对象列表,我想使用对象名字段按字母顺序对该列表进行排序。Object包含10个字段,name字段就是其中之一。

代码语言:javascript
复制
if (list.size() > 0) {
    Collections.sort(list, new Comparator<Campaign>() {
        @Override
        public int compare(final Object object1, final Object object2) {
        return String.compare(object1.getName(), object2.getName());
        }
    } );
}

但是没有什么比得上String.compare..?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2011-12-08 22:52:54

从您的代码看,您的Comparator似乎已经使用Campaign进行了参数化。这只适用于List<Campaign>。此外,您正在寻找的方法是compareTo

代码语言:javascript
复制
if (list.size() > 0) {
  Collections.sort(list, new Comparator<Campaign>() {
      @Override
      public int compare(final Campaign object1, final Campaign object2) {
          return object1.getName().compareTo(object2.getName());
      }
  });
}

或者如果您使用的是Java 1.8

代码语言:javascript
复制
list
  .stream()
  .sorted((object1, object2) -> object1.getName().compareTo(object2.getName()));

最后一点--检查列表大小是没有意义的。排序将在空列表上工作。

票数 245
EN

Stack Overflow用户

发布于 2011-12-08 23:49:30

根据字母顺序对字符串进行排序的最正确方法是使用Collator,因为它是国际化的。一些语言由于额外的字符很少等原因而具有不同的顺序。

代码语言:javascript
复制
   Collator collator = Collator.getInstance(Locale.US);
   if (!list.isEmpty()) {
    Collections.sort(list, new Comparator<Campaign>() {
        @Override
        public int compare(Campaign c1, Campaign c2) {
            //You should ensure that list doesn't contain null values!
            return collator.compare(c1.getName(), c2.getName());
        }
       });
   }

如果您不关心国际化,请使用string.compare(otherString)

代码语言:javascript
复制
   if (!list.isEmpty()) {
    Collections.sort(list, new Comparator<Campaign>() {
        @Override
        public int compare(Campaign c1, Campaign c2) {
            //You should ensure that list doesn't contain null values!
            return c1.getName().compare(c2.getName());
        }
       });
   }
票数 17
EN

Stack Overflow用户

发布于 2018-02-07 06:10:51

使用Java8 Comparator.comparing

代码语言:javascript
复制
list.sort(Comparator.comparing(Campaign::getName));
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8432581

复制
相关文章

相似问题

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