Guava Collections kookboek
1. Inleiding
Dit kookboekartikel is georganiseerd in kleine en gerichte recepten en codefragmenten voor het gebruik van Guava-stijlcollecties.
Het formaat is dat van een groeiende lijst met codevoorbeelden zonder dat aanvullende uitleg nodig is - het is bedoeld om algemeen gebruik van de API gemakkelijk toegankelijk te houden tijdens de ontwikkeling.
2. De recepten
downcast een lijst naar een lijst
– Opmerking: dit is een tijdelijke oplossing voor niet-covariante gegenereerde verzamelingen in Java eenvoudiger alternatief zonder Guava - met 2 cast-operaties het toevoegen van een iterabel aan een verzameling controleer of de collectie element (en) bevat volgens een aangepaste vergelijkingsregel alternatieve oplossing met behulp van zoeken alternatieve oplossing alleen van toepassing op Sets NoSuchElementException Aan Iterables. Vinden als er niets wordt gevonden - dit zal werpen de NoSuchElementException uitzondering: – oplossing: er is een overbelast vind methode die de standaard retourwaarde als argument aanneemt en kan worden aangeroepen met nul voor het gewenste gedrag: verwijder alle null-waarden uit een verzameling maak direct een onveranderlijke lijst / set / kaart maak een onveranderlijke lijst / set / kaart van een standaardcollectie alternatieve oplossing met bouwers Guava is een uitgebreide en fantastisch nuttige bibliotheek - hier zijn nog een paar API's die in kookboekvorm worden behandeld: Genieten. Zoals ik in het begin al zei, experimenteer ik hiermee ander formaat - het kookboek - om te proberen eenvoudige algemene taken voor het gebruik van Guava Collections op één plek te verzamelen. De focus van dit formaat is eenvoud en snelheid, dus de meeste recepten hebben geen aanvullende uitleg anders dan het codevoorbeeld zelf. Eindelijk - ik bekijk dit als een levend document - Ik blijf recepten en voorbeelden toevoegen als ik ze tegenkom. Voel je vrij om meer te geven in de reacties en ik zal proberen ze op te nemen in het kookboek. De implementatie van al deze voorbeelden en codefragmenten is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.klasse CastFunction implementeert Functie {@Override public final T apply (final F from) {return (T) from; }} Lijst originalList = Lists.newArrayList (); List theList = Lists.transform (originalList, new CastFunction ());
Lijst originalList = Lists.newArrayList (); List theList = (List) (List) originalList;
Iterable iter = Lists.newArrayList (); Verzamelaar = Lists.newArrayList (); Iterables.addAll (verzamelaar, iter);
Iterable theCollection = Lists.newArrayList ("a", "bc", "def"); boolean bevat = Iterables.any (theCollection, new Predicate () {@Override public boolean apply (final String input) {return input.length () == 1;}}); assertTrue (bevat);
Iterable theCollection = Sets.newHashSet ("a", "bc", "def"); boolean bevat = Iterables.find (theCollection, new Predicate () {@Override public boolean apply (final String input) {return input.length () == 1;}})! = null; assertTrue (bevat);
Stel theCollection = Sets.newHashSet ("a", "bc", "def"); boolean bevat =! Sets.filter (theCollection, new Predicate () {@Override public boolean apply (final String input) {return input.length () == 1;}}). isEmpty (); assertTrue (bevat);
Iterable theCollection = Sets.newHashSet ("abcd", "efgh", "ijkl"); Predicaat inputOfLengthOne = nieuw Predicaat () {@Override public boolean apply (laatste String-invoer) {return input.length () == 1; }}; String gevonden = Iterables.find (theCollection, inputOfLengthOne);
java.util.NoSuchElementException op com.google.common.collect.AbstractIterator.next (AbstractIterator.java:154) op com.google.common.collect.Iterators.find (Iterators.java:712) op com.google.common. collect.Iterables.find (Iterables.java:643)
String gevonden = Iterables.find (theCollection, inputOfLengthOne, null);
Lijstwaarden = Lists.newArrayList ("a", null, "b", "c"); Iterable withoutNulls = Iterables.filter (waarden, Predicates.notNull ());
ImmutableList immutableList = ImmutableList.of ("a", "b", "c"); ImmutableSet immutableSet = ImmutableSet.of ("a", "b", "c"); ImmutableMap imuttableMap = ImmutableMap.of ("k1", "v1", "k2", "v2", "k3", "v3");
Lijst muttableList = Lists.newArrayList (); ImmutableList immutableList = ImmutableList.copyOf (muttableList); Stel muttableSet = Sets.newHashSet (); ImmutableSet immutableSet = ImmutableSet.copyOf (muttableSet); Kaart muttableMap = Maps.newHashMap (); ImmutableMap imuttableMap = ImmutableMap.copyOf (muttableMap);
Lijst muttableList = Lists.newArrayList (); ImmutableList immutableList = ImmutableList. builder (). addAll (muttableList) .build (); Stel muttableSet = Sets.newHashSet (); ImmutableSet immutableSet = ImmutableSet. builder (). addAll (muttableSet) .build (); Kaart muttableMap = Maps.newHashMap (); ImmutableMap imuttableMap = ImmutableMap. builder (). putAll (muttableMap) .build ();
3. Meer Guava-kookboeken
Guava Kookboek bestellen
Guava Functioneel kookboek
4. Vooruit gaan