【java8新特性】stream流的⽅式遍历集合(⼏个常⽤⽤法) 前⾔:
在没有接触java8的时候,我们遍历⼀个集合都是⽤循环的⽅式,从第⼀条数据遍历到最后⼀条数据,现在思考⼀个问题,为什么要使⽤循环,因为要进⾏遍历,但是遍历不是唯⼀的⽅式,遍历是指每⼀个元素逐⼀进⾏处理(⽬的),⽽并不是从第⼀个到最后⼀个顺次处理的循环,前者是⽬的,后者是⽅式。 所以为了让遍历的⽅式更加优雅,出现了流(stream)!
stream的⽅法:
这篇⽂章主要先讲3个常⽤的情景:
⼀:把list⾥每⼀个对象的某个属性值取出来放到list中
⼆:把list⾥每⼀个对象的某⼏个属性转成其他对象的属性并返回新的对象组成的List
三:把list⾥每⼀个对象拷贝到另⼀个同样属性的对象中并返回新的对象组成的List
public static void main(String[] args) {
List<OrderDetail> orderDetailList = new ArrayList<OrderDetail>();
OrderDetail orderDetail = new OrderDetail();
orderDetail.setProductId("1");
orderDetail.setProductQuantity(1);
OrderDetail orderDetail2 = new OrderDetail();
orderDetail2.setProductId("2");
orderDetail2.setProductQuantity(2);
OrderDetail orderDetail3 = new OrderDetail();
orderDetail3.setProductId("3");
orderDetail3.setProductQuantity(3);
orderDetailList.add(orderDetail);
orderDetailList.add(orderDetail2);
orderDetailList.add(orderDetail3);
// ⼀:把list⾥每⼀个对象的ID取出来放到list中
List<String> productIdList = orderDetailList.stream()
.map(OrderDetail::getProductId)
.List());
System.out.println(productIdList); // 输出 [1,2,3]
/
/ ⼆:把list⾥每⼀个对象的某⼏个属性转成其他对象的属性
List<DecreaseStockInput> decreaseStockInputList = orderDetailList.stream()
.map(e -> new ProductId(), e.getProductQuantity())) .List());
System.out.println(decreaseStockInputList);
// 输出 [
// DecreaseStockInput(productId=1, productQuantity=1),
// DecreaseStockInput(productId=2, productQuantity=2),
// DecreaseStockInput(productId=3, productQuantity=3)
// ]
// 三:把list⾥每⼀个对象拷贝到另⼀个同样属性的对象中并返回新的对象List
List<ProductInfo> productInfoList = new ArrayList<ProductInfo>();
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("1");
productInfo.setProductName("商品1");
ProductInfo productInfo2 = new ProductInfo();
productInfo2.setProductId("2");
productInfo2.setProductName("商品2");
productInfoList.add(productInfo);
java streamproductInfoList.add(productInfo2);
List<ProductInfoOutput> productInfoOutputList =
productInfoList.stream().map(e -> {
ProductInfoOutput productInfoOutput = new ProductInfoOutput();
return productInfoOutput;
}).List());
System.out.println(productInfoOutputList);
// 输出[
// ProductInfoOutput(productId=1, productName=商品1),
// ProductInfoOutput(productId=2, productName=商品2)
// ]
}
更⾼级的⽤法后续会更新。。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论