Есть ли более краткий способ написать этот метод с помощью лямбда-выражений? - PullRequest
0 голосов
/ 28 ноября 2018

Я сортирую массив «Альбомов» по ​​выводу их метода getAlbumArtist(), используя собственный класс компаратора, AlphaNumComparator, который имеет метод compare, который сравнивает две строки.

У меня есть следующий код, который работает:

AlphanumComparator comparator = new AlphanumComparator ( CaseHandling.CASE_INSENSITIVE );

Arrays.sort( albumArray, ( Album a, Album b ) -> {
    return comparator.compare( a.getAlbumArtist(), b.getAlbumArtist() );
});

Это похоже на код, который можно упростить / сделать более понятным с некоторыми новыми возможностями языка в Java, ноЯ не могу сделать все по формеЭто возможно, или это примерно так же, как это получается?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Предположим, albumArray является list, вы можете сделать это

albumArray.sort(Comparator.comparing(Album::getAlbumArtist, String.CASE_INSENSITIVE_ORDER));

, иначе вы можете сделать это

Arrays.sort(albumArray, Comparator.comparing(Album::getAlbumArtist, String.CASE_INSENSITIVE_ORDER));
0 голосов
/ 28 ноября 2018

Вы можете сделать это так,

Album[] sortedAlbums = Arrays.stream(albumArray)
    .sorted(Comparator.comparing(a -> a.getAlbumArtist().toLowerCase()))
    .toArray(Album[]::new);
0 голосов
/ 28 ноября 2018

Я предлагаю вам использовать

    Arrays.sort(albumArray, Comparator.comparing(Album::getAlbumArtist, comparator));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...