java Stream map() 案例

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}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值