Fist von allem, ich bin ziemlich neu in Java mein Ansatz für das Problem möglicherweise nicht optimal sein.Wert hinzufügen Hashtable mit Lambda
Ich habe einige Listen von Zeichenketten, sagen {"a", "b", "e", "g"}
und {"no", "a", "g", "great"}
, die enthalten 4 Artikel jeweils aus einer Reihe von Werten.
Ich mag ein Hashtable
diesen Satz erstellen, einen int
Wert jeden String
zuweisen. Für einen bestimmten String
möchte ich einen Lambda-Ausdruck verwenden verschiedene Werte es basierend auf den andere Gegenstände zuweisen in der Liste, um es in enthalten ist, so etwas wie:
class bla {
static Map stuff;
static {
// If I write it like this, I get the error "Cannot resolve method ContainsAll"
stuff.put("g", (aList) -> (aList.containsAll(Arrays.asList("a", "b", "e", "g")) ? 1 : 2));
}
}
Wenn ich fügen Sie eine List<String>
zu wie so, (List <String> aList)
dann bekomme ich eine "Zieltyp eines Lambda-Ausdruck muss eine Schnittstelle sein" Fehler.
Wenn ich ()
mit {}
für den Lambda-Körper ersetzen, erhalte ich den „, erwartete Fehler“.
Wie kann ich das schreiben, um zu arbeiten? Oder hast du eine bessere Idee?
Sie scheinen zufällige Dinge zu versuchen, anstatt das Javadoc der Klassen zu lesen, die Sie verwenden. Erster Hinweis: Keine Methode im JDK beginnt jemals mit einem Großbuchstaben. –
^und Sie werden fast sicher kein Lambda brauchen, um zu tun, was Sie wollen. – EvanM
Verwenden Sie auch keine Rohtypen. Sie möchten eine Karte. Keine Karte. –