Java8利⽤stream将对象集合list中抽取属性集合转化为map或list ⾸先新建⼀个实体类Person
@Data
public class Person {
/** 编码 */
private String code;
/** 名字 */
private String name;
public Person(String code, String name){
this.name = name;
}
}
实例化三个对象放⼊list集合中
public static void main(String[] args){
Person person1 =new Person("001","张三");
Person person2 =new Person("002","李四");
Person person3 =new Person("002","王五");
List<Person> personList =new ArrayList<>();
personList.add(person1);
personList.add(person2);
personList.add(person3);
personList.forEach(t -> System.out.String()));java stream
}
输出结果为:
Person(code=001, name=张三)
Person(code=002, name=李四)
Person(code=002, name=王五)
1.抽取对象的code作为key,name作为value转化为map集合
⽅法为
private static HashMap<String, String>listToMap(List<Person> personList){
return(HashMap<String, String>)personList.stream()
.filter(t -> t.getName()!=null)
.Map(Person::getCode,Person::getName,(k1,k2)->k2));
}
filter() ⽅法作⽤是过滤掉名字为空的对象,当对象的名字为null时,会出现NPE空指针异常
(k1,k2)->k2 意思是遇到相同的key时取第⼆个值
(k1,k2)->k1 意思是遇到相同的key时取第⼀个值
调⽤这个⽅法
HashMap<String,String> personMap =listToMap(personList);
personMap.forEach((k,v)-> System.out.String()+" - "+ v.toString()));
输出结果为:
001-张三
002-王五
2.抽取对象的name得到name的list集合
⽅法为
private static List<String>getNameList(List<Person> personList){
return personList.stream().map(Person::getName).List()); }
调⽤这个⽅法
List<String> nameList =getNameList(personList);
nameList.forEach(t -> System.out.String()));
输出结果为:
张三
李四
王五

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。