java Stream流等操作

java Stream流等操作

  • 1、foreach循环遍历
  • 2、filter过滤
  • 3、map转变key或者value
  • 4、collect收集相关数据
  • 5、reduce减少

JSONObject json = JSONObject.parseObject(jsonStr); 
//parse主要解析字符串,当调用tostring或者tojsonstring会出现, 为null的字段不会被 打印出来

1、foreach循环遍历

在对json迭代的时候,增删会报ConcurrentModificationException,改不会,
解决办法:用iterator迭代, iterator.remove(); 用这个方法删除,或者for循环,移除索引,而不是键key也是可以的

  	   jsonObject.entrySet().forEach(item->{            
            if(item.getValue().equals("")){
                //jsonObject.put("aaa","aaa");
                //jsonObject.remove(item.getKey());
                jsonObject.put(item.getKey(),null);
            }
        });
          Set> entries = jsonObject.entrySet();
        Iterator> iterator = entries.iterator();
        while (iterator.hasNext()){
            Map.Entry next = iterator.next();
            if(next.getKey().equals("GPS_INSTALLING")){
                iterator.remove();                                    
            }
        }

2、filter过滤

//将key过滤满足条件放入集合
List collect = jsonObject.keySet().stream().filter(e->e.contains("e")).collect(Collectors.toList()); 

3、map转变key或者value

//将k所有ey改变放入集合
List collect = jsonObject.keySet().stream().map(e->{return e.substring(0,3);}).collect(Collectors.toList());

4、collect收集相关数据

//将所有key放入集合
List collect = jsonObject.keySet().stream().collect(Collectors.toList());

//将key过滤满足条件放入集合
List collect = jsonObject.keySet().stream().filter(e->e.contains("e")).collect(Collectors.toList()); 

//将k所有ey改变放入集合
List collect = jsonObject.keySet().stream().map(e->{return e.substring(0,3);}).collect(Collectors.toList());

 //找第一个找不到抛异常
String collect = jsonObject.keySet().stream().findFirst().orElseThrow(()->new Tango2BaseRuntimeException(""));

//只有所有key都满足才会是 true
boolean collect = jsonObject.keySet().stream().allMatch(e->e.contains(""));

5、reduce减少

List ints = Lists.newArrayList(1,25,3,4,5,6,7,8,9,10);
//获得所有数的和+起始值(2)
System.out.println("ints sum is:" + ints.stream().reduce(2, (sum, item) -> sum + item));

//获得所有数的和
System.out.println("ints sum is:" + ints.stream().reduce((sum, item) -> sum + item).get());

//获得数组中值最大的
System.out.println("最大值:" + ints.stream().reduce((sum, item) -> sum>=item?sum:item).get());

//获得集合大小
System.out.println("ints sum is:" + ints.stream().count());

Stream s = Stream.of("test", "t1", "t2", "teeeee", "aaaa", "taaa");
//拼接字符串 结果:[value]testt1t2teeeeeaaaataaa
System.out.println(s.reduce("[value]",(a,b)->a.concat(b)));

你可能感兴趣的:(stream)