Лямбда выражения Java 8 (сортировка String)

202
20 ноября 2017, 17:48
public static <T> void sort(String ... array, Comparator<T> comparator){
        String buffer;
        for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
                if(comparator.compare(array[i], array[j]) == 1){
                    buffer = array[i];
                    array[i] = array[j];
                    array[j] = buffer;
                }
            }
        }
    }

В качестве компаратора используйте лямбда-функцию, задающую реализацию методу compare() из интерфейса java.util.Comparator.

Answer 1

Как вариант пузырьковой сортировки с лямбдой - может он вам поможет. Строки сортируются в данном случае сначала по длине, потом по индексу буквы e.

import java.util.Arrays;
import java.util.Comparator;
public class TestCompareStrings {
    public static void main(String[] args) {
        String[] arr = {"red", "green", "blue"};
        sort((a, b) -> {
            return a.length() > b.length() ? 1 : (a.length() == b.length()) ? 0 : -1;
        }, arr);
        System.out.println(Arrays.toString(arr));
        sort((a, b) -> {
            return a.indexOf('e') > b.indexOf('e') ? 1 : (a.indexOf('e') == b.indexOf('e')) ? 0 : -1;
        }, arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void sort(Comparator<String> comparator, String[] array) {
        String buffer;
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = array.length - 2; j >= i; j--) {
                if (comparator.compare(array[j], array[j + 1]) == 1) {
                    buffer = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = buffer;
                }
            }
        }
    }
}
READ ALSO
Ошибка has no zero argument constructor Intent Service

Ошибка has no zero argument constructor Intent Service

Никак не могу понять в чем ошибкаИспользую конструктор без аргумента,но при этом все равно ловлю этот эксепшен

210
Недостаточно места в ArrayList

Недостаточно места в ArrayList

Если при вставке новых элементов в ArrayList, недостаточно места, то новая ёмкость рассчитывается по формуле: (oldCapacity*3)/2+1 С какой целью разработчики...

213
Создание для функции выборки данных из Базы Данных(Java)

Создание для функции выборки данных из Базы Данных(Java)

Здравствуйте, пишу программу, которая работает с БД, но возникла проблема с написание хорошей функции для выборке данных из БД, чтобы она...

169
Шифрование методом AES

Шифрование методом AES

Здравствуйте, есть такой вот код, по идее он должен зашифровать слово "hello" и здесь же дешифровать, вывести в text view, но при запуске приложение...

170