1067 Stimmen

Java 8 List<V> in Map<K, V> umwandeln

Ich möchte eine Liste von Objekten in eine Map mit Java 8 Streams und Lambdas übersetzen.

So würde ich es in Java 7 und darunter schreiben.

private Map nameMap(List choices) {
        final Map hashMap = new HashMap<>();
        for (final Choice choice : choices) {
            hashMap.put(choice.getName(), choice);
        }
        return hashMap;
}

Das kann ich einfach mit Java 8 und Guava erreichen, aber ich möchte wissen, wie man dies ohne Guava machen kann.

In Guava:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }
    });
}

Und Guava mit Java 8 Lambdas.

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}

0voto

Frank Neblung Punkte 2779

Als Alternative zu guava kann man kotlin-stdlib verwenden

private Map nameMap(List choices) {
    return CollectionsKt.associateBy(choices, Choice::getName);
}

-1voto

Rajeev Ranjan Punkte 254
List listA = new ArrayList<>();
    listA.add(1);
    listA.add(5);
    listA.add(3);
    listA.add(4);       

    System.out.println(listA.stream().collect(Collectors.toMap(x ->x, x->x)));

-3voto

Ajay Kumar Punkte 3978
String array[] = {"ASDFASDFASDF","AA", "BBB", "CCCC", "DD", "EEDDDAD"};
    List list = Arrays.asList(array);
    Map map = list.stream()
            .collect(Collectors.toMap(s -> s.length(), s -> s, (x, y) -> {
                System.out.println("Duplicater Schlüssel" + x);
                return x;
            },()-> new TreeMap<>((s1,s2)->s2.compareTo(s1))));
    System.out.println(map);

Duplicater Schlüssel AA

{12=ASDFASDFASDF, 7=EEDDDAD, 4=CCCC, 3=BBB, 2=AA}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X