Wenn Sie eine Drittanbieter - Bibliothek mit Open sind, können Sie die Verwendung der Collectors2
Klasse in Eclipse - Kollektionen auf die konvertieren List
zu einem Bag
einer Verwendung Stream
. A Bag
ist eine Datenstruktur, die zum Zählen erstellt wurde .
Bag<String> counted =
list.stream().collect(Collectors2.countBy(each -> each));
Assert.assertEquals(1, counted.occurrencesOf("World"));
Assert.assertEquals(2, counted.occurrencesOf("Hello"));
System.out.println(counted.toStringOfItemToCount());
Ausgabe:
{World=1, Hello=2}
In diesem speziellen Fall können Sie einfach collect
die List
direkt in eine Bag
.
Bag<String> counted =
list.stream().collect(Collectors2.toBag());
Sie können das auch Bag
ohne Verwendung eines erstellen, Stream
indem Sie das List
mit den Eclipse Collections-Protokollen anpassen .
Bag<String> counted = Lists.adapt(list).countBy(each -> each);
oder in diesem speziellen Fall:
Bag<String> counted = Lists.adapt(list).toBag();
Sie können die Tasche auch direkt erstellen.
Bag<String> counted = Bags.mutable.with("Hello", "Hello", "World");
A Bag<String>
ist insofern wie a Map<String, Integer>
, als es intern die Schlüssel und ihre Anzahl verfolgt. Wenn Sie jedoch Map
nach einem Schlüssel fragen , der nicht enthalten ist, wird er zurückgegeben null
. Wenn Sie a Bag
nach einem Schlüssel fragen , der nicht using enthält occurrencesOf
, wird 0 zurückgegeben.
Hinweis: Ich bin ein Committer für Eclipse-Sammlungen.