1.遍历两个对象 List<Integer> integers1 = List.of(1, 2); List<Integer> integers2 = List.of(3, 2); integers1.stream().<Consumer<Integer>>map(i1 -> i2 -> { System.out.println(i1 + "<----->" + i2); }).forEach(integers2::forEach); /** * 结果 * 1<----->3 * 1<----->2 * 2<----->3 * 2<----->2 */
2.移除容器中复杂的对象 //案例使用简单String List<String> listF = new ArrayList<String>(); listF.add("12"); List<String> list = new ArrayList<String>(); list.add("1"); list.add("12"); list.add("13"); list.add("0"); System.out.println("初始时:" + list.toString()); System.out.println("初始时listF:" + listF.toString()); listF.stream().<Predicate<String>>map(l -> f -> true).forEach(list::removeIf); // list.removeIf(s -> s.contains("1"));//对集合进行过滤,删除集合中包含“1”的元素 System.out.println("过滤完:" + list.toString()); System.out.println("过滤完listF:" + listF.toString());
3.两个Map容器的遍历
HashMap<String, String> map = new HashMap<>();
map.put("11", "11");
map.put("111", "111");
HashMap<String, String> map2 = new HashMap<>();
map2.put("22", "22");
map2.put("222", "222");
map.entrySet().stream().<Consumer<Map.Entry<String, String>>>map(m1 -> m2 -> {
System.out.println(m1 + "----" + m2);
}).forEach(map2.entrySet()::forEach);
/**
* 11=11----22=22
* 11=11----222=222
* 111=111----22=22
* 111=111----222=222
*/
4.Map去除K/V 包含List中的值 多对多
HashMap<String, String> map = new HashMap<>();
map.put("11", "22");
map.put("2", "111");
map.put("22", "22");
map.put("222", "222");
ArrayList<String> strings = new ArrayList<>();
strings.add("1");
System.out.println(map.toString());
strings.stream().<Predicate<Map.Entry>>map(lt -> mp ->
mp.getValue().toString().contains(lt) || mp.getKey().toString().contains(lt)
).forEach(map.entrySet()::removeIf);
System.out.println(map.toString());
//map.compute 可以去除一对多的
Map<String, String> map = new HashMap<>();
map.put("b", "B");
map.put("c", "C");
map.put("d", "D");
String val = map.compute("b", (k, v) -> null);
System.out.println(val);
System.out.println(map);//{c=C, d=D}
String val2 = map.compute("e", (k, v) -> v + "+v");
System.out.println(val2);//null+v
System.out.println(map);//{c=C, d=D, e=null+v}