jdk8新特新,优雅的从list中取值!
面试官问:jdk8有哪些新特性?
我:别问,问就是不知道!
别在用for循环遍历list啦,太low了。
最快的方式从list中找到name=张的map
简单demo:
//找到name=张的人
List<Map> list = new ArrayList<>();
Map map1 = new HashMap<>();
map1.put("name","张");
map1.put("age","17");
list.add(map1);
Map map2 = new HashMap<>();
map2.put("name","吴");
map2.put("age","18");
list.add(map2);
Map map3 = new HashMap<>();
map3.put("name","李");
map3.put("age","19");
list.add(map3);
System.out.println("list:"+list);
//输出:list:[{name=张, age=17}, {name=吴, age=18}, {name=李, age=19}]
//方法1,使用for循环遍历获取
System.out.println(fun1(list));//输出:{name=张, age=17}
//方法2: 使用lambda表达式获取
System.out.println(fun2(list));//输出:{name=张, age=17}
方法1:使用for循坏遍历
//方法1,使用for循坏遍历
public static Map fun1(List<Map> list) {
Map resultMap = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
if ("张".equals(list.get(i).get("name"))) {
resultMap =list.get(i);
}
}
return resultMap;
}
方法2:使用jdk8新特性,lambda表达式
//方法2:使用jdk8新特性,lambda表达式
public static Map fun2(List<Map> list) {
List<Map> zhang_list = list.stream().filter(u -> "张".equals(u.get("name"))).collect(Collectors.toList());
return zhang_list.get(0);
}
lambda表达式就1行代码,搞定。
收工~