这是我遇到的一种写法,由于之前没使用过,所以自己研究一下,感觉也就那么回事,下面是我自己的测试用例。
介绍一下:
.stream().collect
在Java中,.stream().collect()是一种用于对集合进行流式处理并收集结果的操作。它的主要作用是对集合中的元素进行某种操作,然后将结果收集起来。
package Tool; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; import AnZhong.Student; public class convertMap { public static void main(String[] args) { List<Student> list = new ArrayList<>(); Student student = new Student(); student.setAge("11"); student.setName("万能C"); student.setId(1); list.add(student); Student student2 = new Student(); student2.setAge("11"); student2.setName("admin"); student2.setId(2); list.add(student2); Student student3 = new Student(); student3.setAge("13"); student3.setName("Jack"); student3.setId(3); list.add(student3); //ke代表键,v是值,(k1,k2) -> k1如果有重复的ke,取第一个 Map<String, String> map = list.stream().collect(Collectors.toMap(ke -> String.valueOf(ke.getId()),v -> v.getName(),(k1,k2) -> k1)); /********************** 检验是否转map成功 *************************/ //遍历方法一 //获取map中的key键名的set集合 Set<String> ketSet = map.keySet(); // 得到迭代器 Iterator<String> iterator = ketSet.iterator(); //使用Lambda方式输出 iterator.forEachRemaining(element -> { String value = map.get(element); System.out.println(element + "->" + value); }); //遍历方法二 System.out.println("****************************"); //Entry类,键值对类 Set<Entry<String, String>> entrySet = map.entrySet();//引用的是java.util里面的包 for (Entry<String,String> entry : entrySet) { //获取键值对类中的key String key = entry.getKey(); //获取键值对类中的value String value = entry.getValue(); System.out.println(key+":"+value); } } }
打印结果: