2017-02-19 1 views
-2

Wie dieses Stück Code zu transformieren:`Arrays.stream (...) .collect (...)` von Java 8 bis Java 7

private static Map<CustomObj<? extends CustomOtherObj>, CustomEnumeration> map; 
    if (map == null) { 
     map = Arrays.stream(CustomEnumeration.values()) 
      .collect(Collectors.toMap(x -> x.source, x -> x)); 
    } 

in Java 7 gleichwertig? (Der Arrays.stream.collect(Collectors....) Teil.

Grundsätzlich setzt der obige Code einige Elemente in einer Karte.

+0

Können Sie die Lösung teilen, in die Sie dies konvertieren möchten, und was nicht funktioniert? – Sandeep

+0

Es funktioniert gut auf meinem PC, aber mein Client-PC läuft Java 7 und er kann es im Moment nicht aktualisieren –

Antwort

6

Ganz einfach

if (map == null) { 
    map = new HashMap<>(); 
    for(CustomEnumeration e : CustomEnumeration.values()) 
     map.put(e.source, e); 
} 
+0

Perfekt, genau das, was ich brauchte –

1

Das map() Lambda führt gerade eine Aktion für jedes Element in einer Sammlung. Also, es entspricht in etwa zu einer foreach -Stil for Schleife. Mit anderen Worten, siehe unten. ich hielt x (kein großer Variablenname), um die Ähnlichkeit zu zeigen.

if (null == map) { 
    map = new HashMap<CustomObj<? extends CustomOtherObj>, CustomEnumeration>(); 
    for (CustomEnumeration x : CustomEnumeration.values()) { 
     map.put(x.source, x); 
    } 
}