一.使用Stream流遍历过滤Map集合
需求:
有一个类型为List<Map<String,Object>的集合Map,Map有id、姓名、年龄、地址4个key。要求是把每个map的’name’取出来,作为一个新的集合。
public void testStr(){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> mapOne = new HashMap<>();
mapOne.put("id",1 );
mapOne.put("name","小野光" );
mapOne.put("age",24 );
mapOne.put("address","静岡県静岡市駿河区" );
list.add(mapOne);
Map<String,Object> mapTwo = new HashMap<>();
mapTwo.put("id",2 );
mapTwo.put("name","石井真畿" );
mapTwo.put("age",18 );
mapTwo.put("address","東京都上野" );
list.add(mapTwo);
Map<String,Object> mapThree = new HashMap<>();
mapThree.put("id",3 );
mapThree.put("name","ちゅんこちゅん" );
mapThree.put("age",26 );
mapThree.put("address","愛知`名古屋" );
list.add(mapThree);
List<String> listStr = list.stream().map(item -> item.get("name").toString()).collect(Collectors.toList());
System.out.println(listStr);
}
参考:https://www.cnblogs.com/xiaostudy/p/11648356.html
二.使用Stream流遍历指定变量并组成新的集合
背景:有个对象,分别有姓名、年龄、联系方式一、联系方式二 这四个属性,其中的两个联系方式我想放在一起遍历,过滤出不为空的,然后组成一个新的集合。
SeatFsVo seatFsVo = new SeatFsVo();
seatFSVo.setName("蒋明");
seatFSVo.setAge(18);
seatFsVo.setExplicitNumber("13007575998");// 联系方式一
seatFsVo.setExplicitNumber2("1300757591");// 联系方式二
List<String> expList = Stream.of(seatFsVo.getExplicitNumber(), seatFsVo.getExplicitNumber2()).filter(item -> StringUtils.isNotEmpty(item)).collect(Collectors.toList());
System.out.println(expList);