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;
}));