[Java] Comment obtenir facilement la plus longue chaîne de caractères d'ArrayList à l'aide de stream

Il s'agit d'un moyen simple de récupérer la longueur maximale de la chaîne stockée dans ArrayList \ . Si vous y pensez normalement, vous pouvez le tourner avec pour obtenir celui dont la longueur devient Max. Ici, stream est utilisé pour l'obtenir en une seule ligne </ strong> </ font>.

Remarque) stream est disponible dans Java 8 ou version ultérieure.

Code source

maxString () est la méthode pour obtenir la longueur de chaîne maximale.

StringList.java



package samples.stream.main;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class StringList {
    private List<String> _strList = new ArrayList<String>();

    public void add(String str) {
        _strList.add(str);
    }

    public String maxString() {
        return _strList.stream().max(Comparator.comparing(String::length)).get();
    }
}

Commentaire

  • max(

Renvoie l'élément maximum du comparateur spécifié (fonction de comparaison qui effectue un tri global). Cela renverra la valeur maximale comparée par Comparator.

  • Comparator.comparing(String::length)

Spécifiez la longueur du type String comme clé de comparaison. Cela comparera par longueur de chaîne.

  • .get()

Renvoie une valeur.

Par conséquent, Renvoie la valeur maximale par rapport à la longueur du type String </ strong> </ font>.

Code de test (bonus)

Ceci est le code de test vérifié. À partir de maintenant, au lieu d'exemplifier avec public static void main (String ... strings) Je voudrais utiliser un code de test comme exemple pour apprendre TDD.

StreamMaxTest.java



package samples.stream.test;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import org.junit.jupiter.api.Test;

import samples.stream.main.StringList;

class StreamMaxTest {
    @Test
    void ArrayList_String_Longueur maximale de la chaîne() {
        StringList stringList = new StringList();
        stringList = new StringList();
        stringList.add("");
        stringList.add("12345");
        stringList.add("1234567890");
        String str = stringList.maxString();
        assertThat("1234567890", is(str));
    }
}

Recommended Posts