【问题标题】:How can I convert Map<String ,List > to Map<String , Map<>> using Java 8如何使用 Java 8 将 Map<String ,List > 转换为 Map<String , Map<>>
【发布时间】:2021-02-08 02:55:50
【问题描述】:

在我的代码中,我有 Map&lt;String , List &gt; 现在我想将 List 中的 Map 转换为 Map&lt;k , v&gt; 。这样结果就会是Map&lt;String ,Map&lt;K,V&gt;&gt;

【问题讨论】:

  • 向我们展示您的代码和问题。
  • 如果不知道这些键值对是什么就无法回答。
  • 请用更多信息更新问题。目前尚不清楚您究竟想在Map&lt;String, Map&lt;K, V&gt;&gt; 中添加什么。您是否希望所有属性名称都是映射键?还是其他东西作为钥匙?在前一种情况下,可以使用反射,但话又说回来,什么你到底想要什么,为什么?

标签: java dictionary


【解决方案1】:

这是为您准备的代码示例。我为插图目的创建了一个 Person 类。无论您在 groupingby 中传递什么,最终都会成为一个键,这里我传递的是 Age(Integer)。在 toMap 中,我再次将 group(String) 作为 key,将 value 作为 Function.identity()。 Function.identity() 获取当前对象,即 Person 对象并将其映射到 Value。

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

class Person {
  String name;
  String group;
  Integer age;

  public Person(String name, Integer age,String group) {
    this.name = name;
    this.age = age;
    this.group = group;
  }
  //Getter setter

  public String getGroup() {
    return group;
  }

  public void setGroup(String group) {
    this.group = group;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Integer getAge() {
    return age;
  }

  public void setAge(Integer age) {
    this.age = age;
  }
}
public class ConvertListToMap {
  public static void main(String...args) {
    List<Person> persons = new ArrayList<>(10);
    persons.add(new Person("Arun", 35,"A"));
    persons.add(new Person("James", 39,"B"));

    //Now want to make age as key and another map contains Person name as key and Person as Value.
    Map<Integer, Map<String,Person>> mapFromList = persons.stream()
                                            .collect(Collectors.groupingBy(Person::getAge,
                                                    Collectors.toMap(Person::getGroup, Function.identity())));
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多