- 最終操作:返回一特定類型的結果。
- 中間操作:返回流本身。
- filter(): 對元素進行過濾
- sorted():對元素排序
- map():元素映射
- distinct():去除重複的元素
- forEach():遍歷每個元素。
- reduce():把Stream 元素組合起來。例如,字符串拼接,數值的 sum,min,max ,average 都是特殊的 reduce。
- collect():返回一個新的集合。
- min():找到最小值。
- max():找到最大值。
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
for(int i = 1 ; i <= 5; ++i){
list.add(i);
}
list.stream().filter(param -> (int)param % 2 == 1)
.forEach(System.out::println);
}
}
輸出:1
3
5
3.2 sorted() 對元素進行排序
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(2);
list.add(3);
list.add(1);
list.add(5);
list.add(4);
list.stream().sorted().forEach(System.out::println);
}
}
輸出:1
2
3
4
5
Stream<T> sorted(Comparator<? super T> comparator);
那麼,自定義比較函數即可,如下代碼:public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(2);
list.add(3);
list.add(1);
list.add(5);
list.add(4);
// list.stream().sorted().forEach(System.out::println);
list.stream().sorted( (param1,param2) -> ((int)param1 < (int)param2 ? 1 : -1 ) )
.forEach(System.out::println);
}
}
輸出爲:5
4
3
2
1
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(1);
list.add(0);
list.stream().map( param -> (int)param == 1 ? true:false )
.forEach(System.out::println);
}
}
輸出:true
false
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(1);
list.add(1);
list.add(0);
list.stream().distinct().forEach(System.out::println);
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(
list.stream().reduce((param1,param2) ->(int)param1 + (int)param2 ).get());
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
List _list = (List) list.stream().filter((param) -> (int)param % 2 == 0)
.collect(Collectors.toList());
_list.forEach(System.out::println);
}
}
輸出:2
4
3.7 min(),max() 找到最大值最小值public class Test {
public static void main(String[] args) throws InterruptedException {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list.stream().min(
(param1,param2) -> (int)param1 > (int)param2 ? 1:-1 ).get());
System.out.println(list.stream().max(
(param1,param2) -> (int)param1 > (int)param2 ? 1:-1 ).get());
}
}
2. 流的分類:可以分爲串行流和並行流;對於操作:可以分爲中間操作和最終操作
3. 流API:
中間操作:
- Intermediate:
- Terminal:
- Short-circuiting: