此为自己摸索出来的代码 并不正规 不过结果也勉强对
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Supplier;
public class FuXi3 {
//此为自己摸索出来的一条筛选元素名字长度和性别的代码
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList();
Collections.addAll(arrayList, "古力娜1,男", "古力娜2,女", "古力娜3,男", "古力娜,女");//往集合快速添加元素
demo02(arrayList, () ->{
String p = "";
int i = 0;
for (int j = 0; j < arrayList.size(); j++) {
String s = arrayList.get(j);//获取每个元素
String[] split = s.split(",");//切割
boolean sda = split[1].equals("女");//判断
if ((split[0].length() < 3) || sda) {//有一个为true就执行里面的内容
arrayList.remove(j);//删除此索引值的元素
j--;//删除后仍停留在当前索引,因为后面的索引值数值会自动补上来
}
}
for (String s : arrayList) {//遍历删选好的集合 由于返回值是String类型 所以把里面的元素都合到一块了
p += s;
p += " ";
}
return p;//返回合好的字符串
});
}
private static void demo02(ArrayList<String> arr, Supplier<String> a) {
String s = a.get();
System.out.println(s);
}
}
正确方式筛选
import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;
public class FuXi3 {
//此为自己摸索出来的一条筛选元素名字长度和性别的代码
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList();//创建集合
Collections.addAll(arrayList, "古力娜1,男", "古力娜2,女", "古力娜3,男", "古力娜,女");//往集合快速添加元素
ArrayList arrayList1 = demo02(arrayList, (s) -> {//调用方法 传入参数
String[] split = s.split(",");//重接函数式接口a的判断规则
return split[0].length() > 3;
}, (s) -> {
String[] split = s.split(",");//重接函数式接口a2的判断规则
return split[1].equals("男");
});
for (Object o : arrayList1) {//遍历筛选好的集合
System.out.println(o
);
}
// new Predicate<String>() {
// @Override
// public boolean test(String s) {
// return false;
// }
// };
}
private static ArrayList demo02(ArrayList<String> arr, Predicate<String> a, Predicate<String> a2) {
ArrayList<String> p =new ArrayList();//创建集合存储筛选好的元素
for (String s1 : arr) {//遍历集合
if (a.and(a2).test(s1)){//如果两个函数式接口测试遍历的arr元素都为true
p.add(s1);//那么就把这个元素添加到新集合当中
}
}
return p;//返回筛选好的集合
}
}