En comparant deux listes entier en utilisant un filtre de java8

Yogi:

J'ai un problème comme suit. Il y a deux listes entier a et b avec une taille égale. Maintenant, je veux comparer à la fois la valeur de la liste au même index. Mon retour de la fonction liste avec 2 valeurs. La première valeur est compte d'une plus grande valeur dans la liste a. La seconde valeur est compte d'une plus grande valeur dans la liste b. Si les deux a la même valeur que ne incrément du nombre.

puis-je obtenir une idée comment il peut être réalisé en utilisant java8 flux / filtre / prédicats

J'avais retrun la méthode ancienne version java.

    static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
        List<Integer> list = new ArrayList<Integer>();
        int asize = 0;
        int bsize = 0;
        for (int i = 0; i <b.size();i++) {
            if(a.get(i) > b.get(i)) {
                asize++;
            }else if(a.get(i) < b.get(i)) {
                bsize++;
            }
        }
        list.add(asize);
        list.add(bsize);
        return list;
    }

EG1. Entrée: a = 5 6 7 b = 3 6 10 Sortie: 1 1 exemple 2. Entrée: a = 17 b = 28 30 99 16 8 Sortie: 1 2

Ravindra Ranwala:

Premier filtre toutes les valeurs égales. Ensuite , créez une carte avec une clé booléenne, qui indique si la valeur donnée dans aest inférieure ou supérieure à la valeur correspondante b. Enfin utiliser le collecteur de comptage pour obtenir le nombre pour chaque catégorie. Voici à quoi il ressemble.

Collection<Long> gtAndLtCount = IntStream.range(0, a.size())
    .filter(i -> a.get(i) != b.get(i)).boxed()
    .collect(Collectors.partitioningBy(i -> a.get(i) < b.get(i), Collectors.counting()))
    .values();

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=230313&siteId=1
conseillé
Classement