Javaでリスト集合が条件を満たすリスト要素集合をフィルタする

2899 ワード

プロジェクト開発の過程で、リストの集合を条件にフィルタリングし、私たちが望んでいる結果やプロジェクトのニーズに合ったデータをフィルタリングすることがよくあります.例えば、私たちは学生の対象を持っていて、学生一人一人が自分の年齢属性を持っていますが、私たちはこの学生の中で21と22のすべての学生をスクリーニングしたいと思っています.私たちはこの学生の集合のデータを条件によってスクリーニングして、私たちが望んでいる結果を得る必要があります.
学生エンティティクラスを作成するには、次の手順に従います.
package com.shsj.entity;

public class Student {
	private Integer stuNum; //   
	private String name; //   
	private Integer age; //   

	public Integer getStuNum() {
		return stuNum;
	}

	public void setStuNum(Integer stuNum) {
		this.stuNum = stuNum;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [stuNum=" + stuNum + ", name=" + name + ", age=" + age + "]";
	}
	
}

Java 8のlambda式を使用してフィルタリング
package com.shsj.test;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.shsj.entity.Student;

/**
 * @Description       List      
 * @author    
 * @version v1.0
 * @date 2018 8 23 
 */
public class FilterListTest {

	/**
	 * @Description            ,   list   ,    
	 * @author    
	 * @return List
	 */
	public static List stuList() {
		List stuList = new ArrayList();
		Student stu1 = new Student();
		stu1.setStuNum(20180823);
		stu1.setName("  ");
		stu1.setAge(20);
		stuList.add(stu1);

		Student stu2 = new Student();
		stu2.setStuNum(20180824);
		stu2.setName("  ");
		stu2.setAge(21);
		stuList.add(stu2);

		Student stu3 = new Student();
		stu3.setStuNum(20180825);
		stu3.setName("  ");
		stu3.setAge(21);
		stuList.add(stu3);

		Student stu4 = new Student();
		stu4.setStuNum(20180826);
		stu4.setName("  ");
		stu4.setAge(22);
		stuList.add(stu4);
		return stuList;
	}
	
	public static void main(String[] args) {
		List stuList = stuList();

		//        : stuList       21 22   
		List ageList = new ArrayList();
		ageList.add(21);
		ageList.add(22);

		// JDK1.8   lambda   ,    stuList           。
		//      
		List result = null;
		result = stuList.stream()
				.filter((Student s) -> ageList.contains(s.getAge()))
				.collect(Collectors.toList());

		//     stuList      
		System.out.println("  stuList      ");
		stuList.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));

		//         result  
		System.out.println("      result  ");
		result.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));
	}
}

 
Java 8 lambda式の使用については、次の参照してください.http://www.importnew.com/16436.html