Найден код, который сортирует с помощью Arrays.sort () - PullRequest
0 голосов
/ 25 октября 2019

Итак, я пытался создать Java-программу, которая решала бы с помощью Генетического алгоритма в Java. У меня были проблемы с сортировкой значения пригодности хромосом, и затем я нашел этот код, который отлично работает с моим другим кодом:

public void sortChromosomeByFitness(){
    Arrays.sort(chrom,(chrom1,chrom2) -> {

        int flag = 0;
        if(chrom1.getFitness() > chrom2.getFitness())
            flag=-1;
        else if (chrom1.getFitness() < chrom2.getFitness())
            flag=1;
        return flag;

    });
}

Может кто-нибудь помочь мне объяснить значение кода? особенно Arrays.sort (chrom, (chrom1, chrom2) -> и для чего этот флаг? Спасибо

1 Ответ

1 голос
/ 25 октября 2019

Это лямбда-выражение для интерфейса Comparable. flag - это просто значение, которое обычно возвращает метод compareTo.

Его даже можно заменить на Comparator.comparing(Chromosome::getFitness), если класс называется Chromosome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...