java里對list的操作,我們一遍使用for遍歷,輸出或改變里面的內容。單經常在代碼里面我們發現,也可以使用這樣的代碼結構
?daPaymentActionVo.setApnolist(paymentActionVo.getApnolist().stream().map(PaymentActionVo.Voucher::getApno).collect(Collectors.toList()));
daPaymentActionVo.setApnolist(paymentActionVo.getApnolist().stream().map(PaymentActionVo.Voucher::getApno).collect(Collectors.toList()));
這是鏈式編程
在 Java 中,可以使用鏈式編程(Fluent Interface)風格來操作 List,使代碼更加簡潔和易讀。以下是幾種常見的鏈式編程方式:
?Java 8 Stream API 鏈式操作
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class ListChainExample {public static void main(String[] args) {List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");// 鏈式操作示例List<String> result = names.stream().filter(name -> name.length() > 3) // 過濾長度大于3的名字.map(String::toUpperCase) // 轉換為大寫.sorted() // 排序.collect(Collectors.toList()); // 收集為ListSystem.out.println(result); // 輸出: [ALICE, CHARLIE, DAVID]}
}
?使用第三方庫如 Guava 的鏈式構建
import com.google.common.collect.ImmutableList;
import java.util.List;public class GuavaChainExample {public static void main(String[] args) {// 使用Guava構建不可變ListList<String> colors = ImmutableList.<String>builder().add("Red").add("Green").add("Blue").build();System.out.println(colors); // 輸出: [Red, Green, Blue]}
}
集合工具類的鏈式操作
import java.util.*;
import java.util.stream.Collectors;public class CollectionUtilsExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);// 鏈式操作List<String> processed = numbers.stream().filter(n -> n % 2 == 0).map(n -> "Number: " + n).peek(System.out::println) // 輸出: Number: 2, Number: 4, Number: 6.collect(Collectors.toList());}
}
優點:
鏈式編程的優勢在于:
代碼更加簡潔易讀
操作步驟清晰可見
減少了臨時變量的使用
支持流暢的操作序列
注意:在鏈式操作中,每個方法通常都返回一個對象(通常是當前對象或新對象),這樣才能繼續調用下一個方法。