JAVA8stream嵌套循環並設置值

JAVA8stream嵌套循環並設置值

簡介:
Java 8 API添加了一個新的抽象稱爲流Stream,可以讓你以一種聲明的方式處理數據。
Stream 不存儲數據、不改變源數據
詳情請閱讀stream官網

一.測試代碼

  public static void main(String[] args)throws Exception {
        List<TSnipingGoodSku> intList1 = new ArrayList<>();
        TSnipingGoodSku tSnipingGoodSku1 = new TSnipingGoodSku();
        tSnipingGoodSku1.setSkuId(11);
        TSnipingGoodSku tSnipingGoodSku2 = new TSnipingGoodSku();
        tSnipingGoodSku2.setSkuId(12);
        intList1.add(tSnipingGoodSku1);
        intList1.add(tSnipingGoodSku2);

        List<TSnipingGoodSku> intList = new ArrayList<>();
        TSnipingGoodSku tSnipingGoodSku3 = new TSnipingGoodSku();
        tSnipingGoodSku3.setSkuId(11);
        TSnipingGoodSku tSnipingGoodSku4 = new TSnipingGoodSku();
        tSnipingGoodSku4.setSkuId(13);
        intList.add(tSnipingGoodSku3);
        intList.add(tSnipingGoodSku4);

		//找出skuId相同的對象組成集合
         List<TSnipingGoodSku> tSnipingGoodSkus1 =  intList.stream().filter(a1 -> intList1.stream().anyMatch(a2 ->a1.getSkuId() == a2.getSkuId())
         ).collect(Collectors.toList());
        //打印輸出 tSnipingGoodSkus1{11}
         tSnipingGoodSkus1.stream().map(TSnipingGoodSku::getSkuId).forEach(System.out::println);

         //對skuId相同的對象屬性進行操作
        List<TSnipingGoodSku> tSnipingGoodSkus2 = intList.parallelStream().map(a1 ->{//parallelStream :多線程異步stream
           TSnipingGoodSku tSnipingGoodSku =  intList1.stream().filter(a2 -> a1.getSkuId() == a2.getSkuId()).findFirst().orElse(null); //orElse 值爲空返回null防止空指針異常
           if (null != tSnipingGoodSku){
                a1.setSkuId(666);
           }
            return a1;
        }).collect(Collectors.toList());
        //打印輸出 tSnipingGoodSkus2{666,13}
        tSnipingGoodSkus2.stream().map(TSnipingGoodSku::getSkuId).forEach(System.out::println);
        
}

二.實體類

public class TSnipingGoodSku {

  private Integer skuId;

  public Integer getSkuId() {
    return skuId;
  }

  public void setSkuId(Integer skuId) {
    this.skuId = skuId;
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章