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

新手上路,请多包涵

我有一个对象列表,例如 List<Object> p 。我想使用对象名称字段按字母顺序对该列表进行排序。对象包含 10 个字段,名称字段是其中之一。

 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..?

原文由 Saurabh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 975
2 个回答

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

 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

 list
  .stream()
  .sorted((object1, object2) -> object1.getName().compareTo(object2.getName()));

最后一条评论——检查列表大小没有意义。排序将对空列表起作用。

原文由 Robert B 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题