1. 程式人生 > >Java中List集合過濾出符合條件的List元素集合

Java中List集合過濾出符合條件的List元素集合

    在專案開發的過程中,我們經常會對List集合進行按條件的過濾,篩選出我們想要的結果或者是符合專案需求的資料。比如:我們有一批學生物件,每個學生都有自己的年齡屬性,但是我們想要篩選出這一批學生中年齡為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 + "]";
	}
	
}

使用Java8中的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<Student>
	 */
	public static List<Student> stuList() {
		List<Student> stuList = new ArrayList<Student>();
		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<Student> stuList = stuList();

		// 需要篩選的條件:從stuList中篩選出年齡為21和22的學生
		List<Integer> ageList = new ArrayList<Integer>();
		ageList.add(21);
		ageList.add(22);

		// JDK1.8提供了lambda表示式, 可以從stuList中過濾出符合條件的結果。
		// 定義結果集
		List<Student> 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()));
	}
}

相關推薦

JavaList集合過濾符合條件List元素集合

    在專案開發的過程中,我們經常會對List集合進行按條件的過濾,篩選出我們想要的結果或者是符合專案需求的資料。比如:我們有一批學生物件,每個學生都有自己的年齡屬性,但是我們想要篩選出這一批學生中年齡為21和22的所有學生,我們就需要對這一批學生集合中的資料進行按條件的篩

【101】javaList使用filter過濾符合特定條件元素List

在實際開發中,經常需要把一個列表中的元素,按照特定條件過濾出來,放到一個新的列表中。本文給出了幾個例子,來描述解決這個問題的方法。 我們假設有一個書的List,需要找出其中id分別是3、6、8、9的書。本文介紹了兩種方法來完成這個工作。第一種方法是使用jav

java過濾Map符合條件元素

廢話少說,程式碼如下: import java.util.HashMap; import java.util.Map; public class MapDemo { public static void main(String[] args) { Map<St

如何過濾數組對象和子節點對象某一屬性不符合條件

name EDA del fff 對象 ole address nbsp current tableData:[],//過濾後的數據 datalist:[//過濾前的數據 {name:‘chen‘,age:‘18‘,address:‘1‘,id:‘1‘,delete

Java把物件、物件bean、list集合、物件陣列、Map和Set以及字串轉換成Json

把Java對常用的一些資料轉換成Json,以便前臺的呼叫. 物件轉換為Json public class ConvertJson { /** * 物件轉換為Json * @param obj * @

java8stream操作:從集合獲取符合條件元素

List<Student> students = new ArrayList<>(); students.add(new Student(1,"張三",

演算法:在一個集合選取所有符合條件元素組合

做了好幾個題目都遇到題中的場景。於是寫了個演算法,元素組合條件是求和。 演算法能適應的場景要求組合條件可以拆分的,有對應的逆運算。 程式碼實現的是取三個元素和在40~60之間的組合。迴圈n(testList.size())次可以獲取所有符合條件的組合。

VBS讀取txt文檔數據查找Excel單元格數據符合條件的剪切到工作表2

msg readline style 新建 font cti pre creat ins Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false ‘

java內存溢和內存泄漏的區別

int end fbo gin 一個 urn 垃圾 substring 內存問題 內存溢出 雖然在java中我們不用關心內存的釋放, 垃圾回收機制幫助我們回收不需要的對象,但實際上不正當的操作也會產生內存問題:如,內存溢出、內存泄漏 內存溢出:out of memory:簡

Java應該返回零長度數組或空集合,而不是返回null(轉)

.com sta cti target 使用 net arr pla 而不是 說明:為了避免在數組和集合的獲取上增加null的判斷,同時也能減少不必要的空指針異常,通常會在業務返回零數組或空集合。 方法: 1、數組: 定義全局靜態常量來減少內存開銷:private s

c++ 查詢容器符合條件元素,並返回iterator(find_if)

  #include <iostream> // std::cout #include <algorithm> // std::find_if #include <vector> // std::vector using name

list遍歷的時候,刪除某個符合條件元素

  印象中迴圈刪除list中的元素使用for迴圈的方式是有問題的,但是可以使用增強的for迴圈,然後今天在使用時發現報錯了,然後去科普了一下,再然後發現這是一個誤區。下面就來講一講。。伸手黨可直接跳至文末。看總結。。   JAVA中迴圈遍歷list有三種方式for迴圈、增強for迴圈(也就是常說的forea

java陣列的最大長度以及List的最大容量

        java 中陣列的最大長度是多少呢?看一下它的length屬性就可以了。length屬性是32位的有符號整數,它的最大值是2的31次冪,就是2G。為何有這個限制呢?為什麼length的屬性不是long型呢?我們假設一下,如果它是long型的,那麼它的最大長度

Java正則表示式過濾字母

public class Test { public static void main(String[] args) throws Exception { // 替換 將4個或4

【知識】Java迴圈打印的各屬性的值

這個問題我們遇到過很多次了。 這裡單獨出一篇部落格,以便以後查閱。 我們知道如果有一個list,在java中如果列印其中的內容。需要迴圈遍歷,逐個列印。 for迴圈list的長度就可以了! 但如果是泛型呢?list的型別是List<Object>的時候呢?

JavaFile之獲取獲取目錄下符合條件的檔案集合

/* * @Datedir 日期檔案目錄 * @condition1 模糊匹配檔名稱條件一 * @condition2 模糊匹配檔名稱條件二 * 用於獲取目錄下符合條件的檔案集合

Java正則表示式過濾字母、數字和中文

1、Java中過濾出字母、數字和中文的正則表示式 (1)過濾出字母的正則表示式 [^(A-Za-z)] (2) 過濾出 數字 的正則表示式 [^(0-9)] (3) 過濾出 中文 的正則表示式 [^(\\u4e00-\\u9fa5)] (4) 過濾出字母、數字

java 若有多個判斷條件 switch比if效率更高

剛剛也就個人想了解下,在此整理下兩者之間的對比及效率更優的原因 兩者對比: 1、兩者都是條件比較語句,但是IF的比較範圍更廣,IF能處理所有的boolean型別的結果值,switch只能處理byte、short、int型別的數值比較。 2、兩者都是在匹配後執行程式碼

java使用sax解析xml,以實體類集合的方式接受xml解析的值

1.先編寫要解析的xml檔案: <?xml version="1.0" encoding="utf-8"?> <class> <stu id="001"> <name>Allen</name> <sex&g

Java字串與陣列,陣列與list之間的轉化,及字串處理

一、Java中字串與陣列之間的轉化 (1)字串-》陣列 如果字串中間有分隔符,比如“,”或者“  ”(空格)就可以利用分隔符來對字串進行分隔,轉化為陣列;舉例: String str = "1,2