[Java] So erhalten Sie mithilfe von Stream auf einfache Weise die längste Zeichenfolge von ArrayList

Dies ist eine einfache Möglichkeit, die maximale Länge der in ArrayList \ gespeicherten Zeichenfolge abzurufen. Wenn Sie normal darüber nachdenken, können Sie es mit drehen, um denjenigen zu erhalten, dessen Länge zu Max wird. Hier wird der Stream verwendet, um ihn in einer Zeile </ strong> </ font> abzurufen.

Hinweis) Stream ist in Java 8 oder höher verfügbar.

Quellcode

maxString () ist die Methode zum Abrufen der maximalen Zeichenfolgenlänge.

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();
    }
}

Kommentar

  • max(

Gibt das maximale Element des angegebenen Komparators zurück (Vergleichsfunktion, die die globale Reihenfolge ausführt). Dies gibt den vom Komparator verglichenen Maximalwert zurück.

  • Comparator.comparing(String::length)

Geben Sie die Länge des String-Typs als Vergleichsschlüssel an. Dies wird nach Zeichenfolgenlänge verglichen.

  • .get()

Gibt einen Wert zurück.

Daher kann String-Typlänge verglichen und der Maximalwert zurückgegeben werden </ strong> </ font>.

Testcode (Bonus)

Dies ist der verifizierte Testcode. Von nun an, anstatt mit public static void main (String ... strings) zu veranschaulichen Ich möchte einen Testcode als Beispiel verwenden, um TDD zu lernen.

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_Maximale Länge der Zeichenfolge() {
        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