Java8使用stream().filter()過濾List物件(查詢符合條件的物件集合)
阿新 • • 發佈:2020-08-04
寫在前面
使用Java8或更高版本,使用stream().filter()來過濾一個List物件,查詢符合條件的物件集合。
List物件類
public class StudentInfo { private String name; private String gender; private int age; private int height; public StudentInfo setName(String mName) { name = mName; return this; } public StudentInfo setGender(String mGender) { gender = mGender; return this; } public StudentInfo setAge(int mAge) { age = mAge; return this; } public StudentInfo setHeight(int mHeight) { height = mHeight; return this; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; } public int getHeight() { return height; } @Override public String toString() { return "StudentInfo{" + "name='" + name + '\'' + ", gender='" + gender + '\'' + ", age=" + age + ", height=" + height + '}'; } }
如上就是List物件類了。這裡稍微的使用了一點鏈式程式設計。
測試資料
public static void main(String[] args) { List<StudentInfo> lsStudentData = new ArrayList<>(); //資料新增 for (int i = 0; i < 30; i++) { StudentInfo student = new StudentInfo(); student.setName("GT Name") .setAge(i) .setGender(i % 2 != 0 ? "Male" : "Female") .setHeight(180); lsStudentData.add(student); } //迴圈遍歷資料 for (StudentInfo studentItem : lsStudentData) { System.out.println(studentItem.toString()); } }
使用filter()過濾List
過濾要求,我們需要尋找年齡大於等於15的年輕人。
List<StudentInfo> lsYoungStudent = lsStudentData.stream().filter(a -> a.getAge() >= 15).collect(Collectors.toList());
for (StudentInfo studentItem : lsYoungStudent) {
System.out.println(studentItem.toString());
}
進行年齡大於等於15的過濾操作。
StudentInfo{name='GT Name', gender='Female', age=0, height=180} StudentInfo{name='GT Name', gender='Male', age=1, height=180} StudentInfo{name='GT Name', gender='Female', age=2, height=180} StudentInfo{name='GT Name', gender='Male', age=3, height=180} StudentInfo{name='GT Name', gender='Female', age=4, height=180} StudentInfo{name='GT Name', gender='Male', age=5, height=180} StudentInfo{name='GT Name', gender='Female', age=6, height=180} StudentInfo{name='GT Name', gender='Male', age=7, height=180} StudentInfo{name='GT Name', gender='Female', age=8, height=180} StudentInfo{name='GT Name', gender='Male', age=9, height=180} StudentInfo{name='GT Name', gender='Female', age=10, height=180} StudentInfo{name='GT Name', gender='Male', age=11, height=180} StudentInfo{name='GT Name', gender='Female', age=12, height=180} StudentInfo{name='GT Name', gender='Male', age=13, height=180} StudentInfo{name='GT Name', gender='Female', age=14, height=180} StudentInfo{name='GT Name', gender='Male', age=15, height=180} StudentInfo{name='GT Name', gender='Female', age=16, height=180} StudentInfo{name='GT Name', gender='Male', age=17, height=180} StudentInfo{name='GT Name', gender='Female', age=18, height=180} StudentInfo{name='GT Name', gender='Male', age=19, height=180} StudentInfo{name='GT Name', gender='Female', age=20, height=180} StudentInfo{name='GT Name', gender='Male', age=21, height=180} StudentInfo{name='GT Name', gender='Female', age=22, height=180} StudentInfo{name='GT Name', gender='Male', age=23, height=180} StudentInfo{name='GT Name', gender='Female', age=24, height=180} StudentInfo{name='GT Name', gender='Male', age=25, height=180} StudentInfo{name='GT Name', gender='Female', age=26, height=180} StudentInfo{name='GT Name', gender='Male', age=27, height=180} StudentInfo{name='GT Name', gender='Female', age=28, height=180} StudentInfo{name='GT Name', gender='Male', age=29, height=180} 過濾後資料+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ StudentInfo{name='GT Name', gender='Male', age=15, height=180} StudentInfo{name='GT Name', gender='Female', age=16, height=180} StudentInfo{name='GT Name', gender='Male', age=17, height=180} StudentInfo{name='GT Name', gender='Female', age=18, height=180} StudentInfo{name='GT Name', gender='Male', age=19, height=180} StudentInfo{name='GT Name', gender='Female', age=20, height=180} StudentInfo{name='GT Name', gender='Male', age=21, height=180} StudentInfo{name='GT Name', gender='Female', age=22, height=180} StudentInfo{name='GT Name', gender='Male', age=23, height=180} StudentInfo{name='GT Name', gender='Female', age=24, height=180} StudentInfo{name='GT Name', gender='Male', age=25, height=180} StudentInfo{name='GT Name', gender='Female', age=26, height=180} StudentInfo{name='GT Name', gender='Male', age=27, height=180} StudentInfo{name='GT Name', gender='Female', age=28, height=180} StudentInfo{name='GT Name', gender='Male', age=29, height=180}
可以看到我們的過濾條件年齡大於大於15
的過濾操作是有效的。