1. ホーム
  2. java

[解決済み] How to sort a List<Object> alphabetically using Object name field

2022-10-24 21:21:04

Question

I have a List of Objects like List<Object> p .I want to sort this list alphabetically using Object name field. Object contains 10 field and name field is one of them.

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());
        }
    } );
}

But there is nothing like String.compare..?

How to solved?

From your code, it looks like your Comparator is already parameterized with Campaign . This will only work with List<Campaign> . Also, the method you're looking for is 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()));

最後のコメントですが、リストのサイズをチェックするのは無意味です。ソートは空のリストで動作します。