將值從 Map<K, V<List>> 傳輸到 Map<otherKey, otherValue<List>> 的最佳方式

comrade_adibit

這是我必須使用的: Map<Faction, List<Resource>>

  • Faction 是玩家派系的枚舉字符串值(例如“rr”代表團隊紅色,“bb”代表團隊藍色)
  • 資源是資源的字符串枚舉值,例如“羊毛”、“木材”

所以列表現在看起來像這樣:

("rr", "wool")
("rr", "wool")
("rr", "lumber")
("bb", "wool")

所以我的目標是擁有一個 Map<Resource, Integer>

  • 其中 Resource 是枚舉中資源的字符串名稱
  • Integer代表資源卡的數量

目標包含值的示例: ("Wool", 4), ("Grain", 3), ("Lumber", 2)


所以我試圖這樣做(在偽代碼中):

  • 提取屬於Faction“rr”的所有資源並將它們放入一個地圖中<Resources, Integer>,其中每種資源類型應表示一次並Integer表示Resource卡片數量的總和--> 對另外 3 個玩家重複此步驟Faction

我玩過流和 foreach 循環,但還沒有產生有價值的代碼,因為我在構思階段還很掙扎。

亞歷克斯·魯登科

看起來實際輸入數據Map<Faction, List<Resource>>看起來像:

{rr=[wool, wool, lumber], bb=[lumber, wool, grain]}

假設適當的枚舉用於Resourceand Faction,可以使用flatMap輸入映射中的值檢索資源到其數量的映射:

Map<Faction, List<Resource>> input; // some input data

Map<Resource, Integer> result = input
    .values() // Collection<List<Resource>>
    .stream() // Stream<List<Resource>>
    .flatMap(List::stream) // Stream<Resource>
    .collect(Collectors.groupingBy(
        resource -> resource,
        LinkedHashMap::new, // optional map supplier to keep insertion order
        Collectors.summingInt(resource -> 1)
    ));

或者Collectors.toMap可以應用:

...
    .collect(Collectors.toMap(
        resource -> resource,
        resource -> 1,
        Integer::sum,      // merge function to summarize amounts
        LinkedHashMap::new // optional map supplier to keep insertion order
    ));

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So konvertieren Sie List <Map <K, V >> in Map <K, List <V >> in Java

Java 8 convert Map <K, List <V >> zur Karte <V, List <K >>

jOOQ: In Map <K, List <Record2 <V, W >> holen

Kann ich List <V> ohne foreach in Map <K, List <V>> konvertieren?

Wie könnte eine Liste in Map <K, V>, aber nicht in List <V> umgewandelt werden?

Java 8-Streams: Lassen Sie Collectors.groupingBy Map <K, List <V >> anstelle von Map <K, List <List <V >> zurückgeben

So verwandeln Sie List <T> mit Lambda in JAVA8 in List <Map <K, V >>

Karte <K, V> zurück zur Karte <V, Map <K, V >> nach groupingBy Wert, statt Map <Obj, List <Eintrag <K, V >>>

List <V> in Map <K, List <V >>, mit Java 8-Streams und benutzerdefinierte Liste und Karte Lieferanten Wie konvertiert?

Kotlin Gibt es eine Möglichkeit, Map <K out T, List <V out T> auf List <T> zu reduzieren?

Reduzieren map(map(map(list(string)))) terraform

Java 8-Stream zu Map <K, List <String>

Java-Fehler - Der Typ List <E> ist nicht sichtbar. - Der Typ Map <K, V> ist nicht sichtbar

將 List<String> 轉換為 List<Map<String,dynamic>>

Transforming list to map in Groovy

Wie kann man List to Map<T, <K, List<Person>>> umwandeln und Java-Lambda verwenden?

Java 8 - List <Map> in Single Map

ImmutableJS - Filtern von verschachtelten Map{List(Map{...})}

Kotlin 將 csv 轉換為 map <String, List>

Warum erweitert Map <K, V> die Funktion <K, V> nicht?

List <Map <String, String >> vs List <? erweitert Map <String, String >>

Wie kann man List <Map <?,? >> in List <Map <String, String >> umwandeln?

Mapping Map <String, List <>> mit List <>

List <Map <String, String >> vs List <Object>

Java Stream convert List into Map

AsyncTask <Map <String, List <Object>>

AsyncTask <Map <String, List <Object>>

WordPress Map List Pro JavaScript

Verarbeiten Sie std :: map <K, V> und std :: map <K, V *> auf ähnliche Weise

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  4. 4

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  5. 5

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  6. 6

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  7. 7

    So implementieren Sie Pushwoosh mit ionic 2

  8. 8

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  9. 9

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    So erstellen Sie ein Array von Objekten aus zwei Arrays von Objekten mit einem gemeinsamen Schlüssel - JavaScript

  12. 12

    Rufen Sie die ID aus der Datagrid-Ansicht ab und zeigen Sie die Daten in Textfeldern einem anderen Formular an

  13. 13

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  14. 14

    Ersetze einen Teil einer Zeichenfolge durch eine Pandas-Spalte als Muster

  15. 15

    Blättern Sie auf Radio Click zur Abschnitts-ID

  16. 16

    CBCentralManager wird nach dem Verbinden neu gestartet

  17. 17

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  18. 18

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  19. 19

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  20. 20

    AQL: Teilweise Übereinstimmung in einer Reihe von Zeichenfolgen

  21. 21

    So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

heißlabel

Archiv