集合對象.stream() 獲取流對象,對元素批處理(不改變原集合)
集合元素循環除了用for循環取出,還有更優雅的方式.forEach
示例List集合獲取Stream對象進行元素批處理
import java.util.ArrayList; import java.util.List; /** * @ClassName ArrayListStreamExample * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/11. */ public class ArrayListStreamExample { public static void main(String[] args) { List<String> persons = new ArrayList<>(); persons.add("李一桐"); persons.add("劉亦菲"); persons.add("鞠婧禕"); persons.add("李易峰"); persons.add("李純"); persons.add("李小璐"); persons.add("李健"); persons.add("李連傑"); // persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println); List<String> liPerson = new ArrayList<>(); persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o)); System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李連傑] } }
常用方法:
Map映射
如果需要將流中的元素映射到另一個流中,可以使用 map 方法。
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function是一個函數式接口,他有一個R apply(T t);方法,可以把T對象轉化成R對象。這個就叫做映射。
- 統計個數Count
- 獲取前幾個Limit
- 跳過前幾個Skip
- 組合concat
- 最大最小值
常用方法示例代碼:
import java.util.stream.Stream; /** * @ClassName StreamFuncExample * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/12. */ public class StreamFuncExample { public static void main(String[] args) { Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射輸出2、4、6 long count = Stream.of(1,3,4,5).count(); //統計個數 System.out.println(count); Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三個 Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳過前三個 Stream<Integer> num = Stream.of(1,2,3); Stream<String> person = Stream.of("張三","李四","王五"); Stream allStream = Stream.concat(num,person); allStream.forEach(System.out::println); //1,2,3, 張三","李四","王五" int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大 System.out.println(max); //6 } }
Stream對象轉換為集合
collect(Collectors.toList())
collect(Collectors.toSet())
collect(Collectors.toMap())
public class StreamCollectCollectorsXXX { public static void main(String[] args) { Stream<String> persons = Stream.of("張三","李四","王五"); // List<String> personList = persons.collect(Collectors.toList()); // Set<String> personSet = persons.collect(Collectors.toSet()); Map<String,Integer> personMap = persons.collect(Collectors.toMap( K ->K, K ->K.length())); System.out.println(personMap); } }