首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

初探 Lambda 與 Java 多核心程式設計(一):從集合到 Stream 流式處理

     編輯:Java 相關知識

什麼是「迭代」與「流」

傳統集合操作屬於「外部迭代」:由呼叫端控制迴圈、攜帶狀態。Stream 引入「內部迭代」:宣告式描述資料轉換管線,資料如流水般流經各階段,無需顯式儲存中間結果。

從命令式到宣告式:程式碼演進

傳統寫法(兩次 forEach)

List<Contact> contacts = new ArrayList<>();
contactList.forEach(s -> {
    Contact c = new Contact();
    c.setName(s);
    contacts.add(c);
});

List<Contact> valid = new ArrayList<>();
contacts.forEach(c -> {
    if (c.call()) valid.add(c);
});
System.out.println(valid.size());

Stream 管線重構

long count = contactList.stream()
    .map(s -> new Contact().setName(s))  // String -> Contact
    .filter(c -> c.call())               // 保留通話成功
    .count();                            // 終端操作:計數

stream() 開啟管線,map() 轉換型別,filter() 篩選,count() 觸發執行並產出結果。中間操作(map/filter)是惰性的,只有終端操作才會真正執行。

Stream 核心特性

  • 不儲存資料:僅表示「可選的有序值序列」
  • 函數式:操作不修改來源,產生新流
  • 可並行:parallelStream() 即可利用多核心加速大量資料處理

Contact 範例類別

public class Contact {
    private String name;
    private Random random = new Random();
    public Contact setName(String name) { this.name = name; return this; }
    public boolean call() { return random.nextBoolean(); } // 模擬通話成敗
}

效能與可讀性權衡

Stream 寫法精簡且語意清晰,順序執行效能約為傳統迴圈 2 倍;並行流在大資料集下優勢明顯。代價是初學者需適應宣告式思維。

本節小結

Stream 將「如何做」轉為「做什麼」,配合 Lambda 表達式,讓集合處理更符合函數式程式設計範式,為後續並行計算奠基。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved