@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@ToString
@Builder
public class Person {
Integer id;
String name;
Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
}
一、entrySet
Listlist = Arrays.asList( Person.builder().id(1).name("张三").age(20).build(), Person.builder().id(2).name("李四").age(20).build(), Person.builder().id(3).name("王五").age(20).build(), Person.builder().id(4).name("麻溜").age(20).build()); Map map = list.stream().collect(toMap(Person::getId, p -> p)); //entrySet for for (Map.Entry entry : map.entrySet()) { System.out.println("k=="+entry.getKey()); System.out.println("v=="+entry.getValue()); } //stream流可以过滤一下 map.entrySet().stream() .filter(p -> p.getKey() != 1) .forEach(p -> System.out.println("k==" + p.getKey() + "n" + "v==" + p.getValue())); }
遍历结果
//过滤完之后的结果 k==2 v==Person(id=2, name=李四, age=20) k==3 v==Person(id=3, name=王五, age=20) k==4 v==Person(id=4, name=麻溜, age=20)二、迭代器遍历
使用迭代器的时候while会报黄警告,强迫症患者还是使用第一种吧
Listlist = Arrays.asList( Person.builder().id(1).name("张三").age(20).build(), Person.builder().id(2).name("李四").age(20).build(), Person.builder().id(3).name("王五").age(20).build(), Person.builder().id(4).name("麻溜").age(20).build()); Map map = list.stream().collect(toMap(Person::getId, p -> p)); Iterator > iterator = map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry entry = iterator.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); }
遍历结果
1 Person(id=1, name=张三, age=20) 2 Person(id=2, name=李四, age=20) 3 Person(id=3, name=王五, age=20) 4 Person(id=4, name=麻溜, age=20)三、keySet
Listlist = Arrays.asList( Person.builder().id(1).name("张三").age(20).build(), Person.builder().id(2).name("李四").age(20).build(), Person.builder().id(3).name("王五").age(20).build(), Person.builder().id(4).name("麻溜").age(20).build()); Map map = list.stream().collect(toMap(Person::getId, p -> p)); for (Integer key : map.keySet()) { System.out.println(key); System.out.println(map.get(key)); }
遍历结果
1 Person(id=1, name=张三, age=20) 2 Person(id=2, name=李四, age=20) 3 Person(id=3, name=王五, age=20) 4 Person(id=4, name=麻溜, age=20)四、values
这种方式获取不到key,使用的时候可以斟酌一下
Listlist = Arrays.asList( Person.builder().id(1).name("张三").age(20).build(), Person.builder().id(2).name("李四").age(20).build(), Person.builder().id(3).name("王五").age(20).build(), Person.builder().id(4).name("麻溜").age(20).build()); Map map = list.stream().collect(toMap(Person::getId, p -> p)); for (Person value : map.values()) { System.out.println(value); }
遍历结果
Person(id=1, name=张三, age=20) Person(id=2, name=李四, age=20) Person(id=3, name=王五, age=20) Person(id=4, name=麻溜, age=20)



