準備一個實體類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class Student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this .name = name; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } } |
準備一個List集合
1
2
3
4
5
6
7
8
9
|
List<Student> list= new ArrayList<>(); Student s1= new Student(); s1.setName( "張三" ); s1.setAge( 18 ); list.add(s1); Student s2= new Student(); s2.setName( "李四" ); s2.setAge( 22 ); list.add(s2); |
傳統的for循環
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//for循環 for ( int i= 0 ;i< list.size();i++){ System.out.println(list.get(i)); } //增強for循環 for (Student student: list){ System.out.println(student); } //迭代器 Iterator<Student> iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } |
使用Stream流
1
2
3
4
5
6
7
8
9
10
11
|
//遍歷List集合 list.stream().forEach(str->{ System.out.println(str.getName()+ ":" +str.getAge()); }); //過濾 把名字為李四的過濾掉 list.stream().filter(str -> ! "李四" .equals(str.getName())).forEach(str -> { System.out.println(str.getName()+ ":" +str.getAge()); }); //操作對象,拼接 //String collect=list.stream().map(student->student.getName()).collect(Collectors.joining(",","前","后")); // System.out.println(collect); |
先聲明篩選條件,在遍歷
1
2
3
4
|
//聲明一個條件 學生年齡大于18 Predicate<Student> pred = (student) -> student.getAge() > 18 ; //調用方法 selectStudent(list,pred); |
1
2
3
4
5
6
7
8
9
|
private static void selectStudent(List<Student> list, Predicate<Student> pred) { System.out.println( "選出年齡大于18的學生:" ); list.forEach(student -> { if (pred.test(student)){ System.out.println(student.getName()+ ":" +student.getAge()); } }); } |
Stream操作 嵌套循環(2層)
1
2
3
4
5
|
//java 8 stream操作 嵌套循環 List<Student> list = list1.stream().filter(student1 -> list2.stream() .anyMatch(studnet2 -> student1.getName().equals(studnet2.getName()) )) .collect(Collectors.toList()); System.out.println( "stream操作篩選后的結果" + list.get( 0 ).getName()); |
但是不建議foreach套foreach
到此這篇關于Java8特性之用Stream流代替For循環操作詳解的文章就介紹到這了,更多相關Java Stream流代替For循環內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/sxh06/article/details/119987984