package com.chunzhi.Test06Predicate;
import java.util.ArrayList;
import java.util.function.Predicate;
/*
練習:集合信息篩選
數組當中有多條”姓名+性別“的信息如下,
String[] array = {"迪麗熱巴,女", "古力娜扎,女", "瑪爾扎哈,男", "趙麗穎,女"};
請通過Predicate接口的拼裝將符合要求的字符串篩選到集合ArrayList中,
需要同時符合兩個條件:
1.必須為女生
2.姓名為4個字。
*/
public class Test05 {
/*
定義一個方法
方法的參數傳遞一個包含人員信息的數組
傳遞兩個Predicate接口,用於對數組中的信息進行過濾
把滿足條件的信息存到ArrayList集合中並返回
*/
public static ArrayList<String> filter (String[] arr, Predicate<String> pre1, Predicate<String> pre2) {
// 定義一個ArrayList數組,存儲過濾之後的信息
ArrayList<String> list = new ArrayList<>();
// 遍歷數組,獲取數組中的每一條信息
for (String s : arr) {
// 使用Predicate中的方法test對獲取到的字符串進行判斷
boolean b = pre1.and(pre2).test(s);
if (b) {
// 條件成立,兩個條件都滿足,把信息存儲到ArrayList集合中
list.add(s);
}
}
// 把集合返回
return list;
}
public static void main(String[] args) {
// 定義一個儲存字符串的數組
String[] array = {"迪麗熱巴,女", "古力娜扎,女", "瑪爾扎哈,男", "趙麗穎,女"};
// 使用filter方法,傳遞字符串數組和兩個Lambda表達式
ArrayList<String> list = filter(array, (String str) -> {
// 用","切割字符串,判斷性別是否為女
return str.split(",")[1].equals("女");
}, (String str) -> {
// 用","切割字符串,判斷長度是否為4個字符
return str.split(",")[0].length() == 4;
});
// 增強for循環,獲取數組中每一條信息
for (String s : list) {
System.out.println(s);
}
}
}
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。