मैंने Java 8 List in Map को फॉलो करने की कोशिश की और सेट टू मैप को बदलने की कोशिश की एक सूची में

लूपिंग के बजाय (जो काम करता है)

for (Type t : toSet()) {
    map.put(Pair.of(t, Boolean.TRUE), this::methodAcceptingMap);
}

मैंने समाधान के साथ प्रयास किया:

toSet().stream()
       .collect(Collectors.toMap(Pair.of(Function.identity(), Boolean.TRUE), 
                                 this::methodAcceptingMap));

लेकिन कनवर्ट करने में त्रुटि हुई:

Type mismatch: cannot convert from Pair<Function<Object,Object>,Boolean> 
to Function<? super T,? extends K>

मेरा नक्शा

private Map<Pair<Type, Boolean>, BiConsumer<Pair<Type, Boolean>, Parameters>> map =
      new HashMap<>();
3
user7294900 15 पद 2019, 10:21

1 उत्तर

मुझे आपका उदाहरण बिल्कुल नहीं मिला। for लूप में आप प्रत्येक मान के लिए एक ही लैम्ब्डा पास कर रहे हैं। मुझे इसमें समझदारी नहीं दिखती। अगर आप वाकई ऐसा चाहते हैं, तो आपको obj -> (pair, param) -> this.methodAcceptingMap(pair, param) पास करना होगा:

toSet().stream().collect(Collectors.toMap(
    obj -> Pair.of(obj, Boolean.TRUE), 
    obj -> (pair, param) -> this.methodAcceptingMap(pair, param)));
2
Andronicus 15 पद 2019, 08:00