Java 8 Stream 常用API整理

 1、JSONArray 转list 

JSONArray jsonArray = new JSONArray();
List<Order> orderList = jsonArray.stream().map(item -> {
    JSONObject js= (JSONObject)item;
    return jsonToEntity(trade);
}).collect(Collectors.toList());

2、JSONArray 转 map

JSONArray jsonArray = new JSONArray();
Map<Long,JSONObject> orderJs = jsonArray.stream().collect(Collectors.toMap(item->{
    JSONObject js = (JSONObject)item;
    return js.getLong("id");
},item-> (JSONObject)item));

3、list转set

Set<Long> idSet = orderList.stream().map(item->  item.getId()).collect(
    Collectors.toSet());

4、list转map,合并相同key

List<OrderLine> orderLineList= new ArrayList();
Map<String, List<OrderLine>> lineMap = orderLineList.stream().collect(Collectors .toMap(OrderLine::getOrderId, item-> new ArrayList<>(ImmutableList.of(item)), (List<OrderLine> oldList, List<OrderLine> newList) -> { oldList.addAll(newList); return oldList; }));
或者是:
Map<String, List<OrderLine>> lineMap1 = orderLineList.stream().collect(Collectors.toMap(OrderLine::getOrderId,Collections::singletonList,(existValue, newValues)-> {existValue.addAll(newValues);return existValue; }));
或者是groupingBy:
Map<String, List<OrderLine>> lineMap2 = orderLineList.stream().collect(Collectors.groupingBy(OrderLine::getOrderId));

5、关键字filter用法

List<Order> oldOrderList =  new ArrayList();
Set <Long>orderIdSet = new ArrayList();
List<Order> orderList = oldOrderList .stream().filter(item->!orderIdSet .contains(item.getid())).collect(Collectors.toList());

6、关键字sorted排序用法

List<Order> olderList =  new ArrayList();
List<Order> newList= olderList.stream()
    .sorted(Comparator.comparing(Order::getId).thenComparing(Order::getSort))
    .collect(Collectors.toList()); 

7、关键字groupingBy用法

List<OrderDetail> orderDetailList=  new ArrayList();
Map<String, Long> map = orderDetailList.stream().collect(Collectors.groupingBy(OrderDetail::getOrderId, Collectors.counting()));

8、stream拆成sql字符串IN用法

List<String> list = new new ArrayList();
String str = list.stream().map(s -> "'" + s + "'").collect(Collectors.joining(", "));

9、stream获取最大、最小、平均值、满足条件的值

List<Integer> integerList = new ArrayList<>();
integerList.add(2);
integerList.add(4);
integerList.add(1);
integerList.add(10);
int maxValue = integerList.parallelStream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
int minValue = integerList.parallelStream().collect(Collectors.summarizingInt(Integer::intValue)).getMin();
double avgValue = integerList.parallelStream().collect(Collectors.summarizingInt(Integer::intValue)).getAverage();
int filterValue = integerList.parallelStream().filter(s -> s > 9).findFirst().orElse(-1);

10、Stream纵向求和、多字段求和

List<Integer> integerList = new ArrayList<>();
int sumValue = integerList.stream().mapToInt(Integer::intValue).sum();
Dao  sumDao = list.stream().collect(Collectors.collectingAndThen(Collectors.toList(),vo->{
        Dao dao= new Dao();
        dao.count=vo.stream().mapToInt(Dao::getCount).sum();
        dao.amount=vo.stream().map(Dao::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add;
        return amountVo;
}));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值