Java 将List转换为Map

Java 将List转换为Map

List是Collection的一个子接口。它是一个对象的有序集合,其中可以存储重复的值。由于List保留了插入的顺序,它允许对元素进行位置访问和插入。List接口由ArrayList、LinkedList、Vector和Stack类实现。

java.util.Map接口表示一个键和一个值之间的映射。Map接口不是Collection接口的一个子类型。因此它的行为与其他的集合类型有些不同。

用Java将List转换为Map的程序

例子
输入: List : [1="1", 2="2", 3="3"]
输出: Map : {1=1, 2=2, 3=3}

输入: List : [1="Geeks", 2="for", 3="Geeks"]
输出: Map : {1=Geeks, 2=for, 3=Geeks}
下面是在Java中把List转换成Map的各种方法。为此,我们假设List的每个元素都有一个标识符,它将被用作生成的Map中的键。

  1. 按列表对象使用:

步骤:

  1. 获取要转换为地图的列表
  2. 创建一个空的地图
  3. 遍历列表中的项目,并将其逐一添加到地图中。
  4. 返回形成的地图
// Java program for list convert in map
// with the help of Object method
  
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
  
// create a list
class Student {
  
    // id will act as Key
    private Integer id;
  
    // name will act as value
    private String name;
  
    // create curstuctor for reference
    public Student(Integer id, String name)
    {
  
        // assign the value of id and name
        this.id = id;
        this.name = name;
    }
  
    // return private variable id
    public Integer getId()
    {
        return id;
    }
  
    // return private variable name
    public String getName()
    {
        return name;
    }
}
  
// main class and method
public class GFG {
  
    // main Driver
    public static void main(String[] args)
    {
  
        // create a list
        List<Student>
            lt = new ArrayList<Student>();
  
        // add the member of list
        lt.add(new Student(1, "Geeks"));
        lt.add(new Student(2, "For"));
        lt.add(new Student(3, "Geeks"));
  
        // create map with the help of
        // Object (stu) method
        // create object of Map class
        Map<Integer, String> map = new HashMap<>();
  
        // put every value list to Map
        for (Student stu : lt) {
            map.put(stu.getId(), stu.getName());
        }
  
        // print map
        System.out.println("Map  : " + map);
    }
}

输出:

Map  : {1=Geeks, 2=For, 3=Geeks}
  1. 使用Collectors.toMap()方法:该方法包括创建一个学生对象的列表,并使用Collectors.toMap()将其转换为一个Map。

步骤:
1. 获取要转换为地图的列表
2. 使用List.stream()方法将列表转换为流。
3. 在Collectors.toMap()方法的帮助下创建地图
4. 使用stream.collect()方法收集形成的地图。
5. 返回形成的地图

// Java program for list convert  in map
// with the help of Collectors.toMap() method
  
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.stream.Collectors;
  
// create a list
class Student {
  
    // id will act as Key
    private Integer id;
  
    // name will act as value
    private String name;
  
    // create curstuctor for reference
    public Student(Integer id, String name)
    {
  
        // assign the value of id and name
        this.id = id;
        this.name = name;
    }
  
    // return private variable id
    public Integer getId()
    {
        return id;
    }
  
    // return private variable name
    public String getName()
    {
        return name;
    }
}
  
// main class and method
public class GFG {
  
    // main Driver
    public static void main(String[] args)
    {
  
        // create a list
        List<Student> lt = new ArrayList<>();
  
        // add the member of list
        lt.add(new Student(1, "Geeks"));
        lt.add(new Student(2, "For"));
        lt.add(new Student(3, "Geeks"));
  
        // create map with the help of
        // Collectors.toMap() method
        LinkedHashMap<Integer, String>
            map = lt.stream()
                      .collect(
                          Collectors
                              .toMap(
                                  Student::getId,
                                  Student::getName,
                                  (x, y)
                                      -> x + ", " + y,
                                  LinkedHashMap::new));
  
        // print map
        map.forEach(
            (x, y) -> System.out.println(x + "=" + y));
    }
}

输出:

1=Geeks
2=For
3=Geeks
  1. 使用Collectors.groupingBy()创建MultiMap:

步骤:

  1. 获取要转换为地图的列表
  2. 使用List.stream()方法将列表转换为流。
  3. 在Collectors.groupingBy()方法的帮助下创建地图。
  4. 使用stream.collect()方法收集形成的地图。
  5. 返回形成的地图
// Java program for list convert  in map
// with the help of Collectors.groupingBy() method
  
import java.util.*;
import java.util.stream.Collectors;
  
// create a list
class Student {
  
    // id will act as Key
    private Integer id;
  
    // name will act as value
    private String name;
  
    // create curstuctor for reference
    public Student(Integer id, String name)
    {
  
        // assign the value of id and name
        this.id = id;
        this.name = name;
    }
  
    // return private variable id
    public Integer getId()
    {
        return id;
    }
  
    // return private variable name
    public String getName()
    {
        return name;
    }
}
  
// main class and method
public class GFG {
  
    // main Driver
    public static void main(String[] args)
    {
  
        // create a list
        List<Student> lt = new ArrayList<Student>();
  
        // add the member of list
        lt.add(new Student(1, "Geeks"));
        lt.add(new Student(1, "For"));
        lt.add(new Student(2, "Geeks"));
        lt.add(new Student(2, "GeeksForGeeks"));
  
        // create map with the help of
        // Object (stu) method
        // create object of Multi Map class
  
        // create multimap and store the value of list
        Map<Integer, List<String> >
            multimap = lt
                           .stream()
                           .collect(
                               Collectors
                                   .groupingBy(
                                       Student::getId,
                                       Collectors
                                           .mapping(
                                               Student::getName,
                                               Collectors
                                                   .toList())));
  
        // print the multiMap
        System.out.println("MultiMap = " + multimap);
    }
}

输出:

MultiMap = {1=[Geeks, For], 2=[Geeks, GeeksForGeeks]}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程