package com.bbbs.springcloud.service;
import lombok.Data;
import lombok.ToString;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
/**
* @className: Demo
* @author: 赵健钢
* @explain:
* @date: 2023-06-16
**/
public class Demo {
public static void main(String[] args) {
// 模拟数据
bean bean0 = new bean("张三", "男", "饺子");
bean bean1 = new bean("李四", "女", "面条");
bean bean2 = new bean("张三", "男", "面条");
bean bean3 = new bean("王五", "女", "面包");
bean bean4 = new bean("张三", "女", "饺子");
bean bean5 = new bean("李四", "男", "饺子");
List<bean> beans = Arrays.asList(bean0, bean1, bean2, bean3, bean4, bean5);
// 模拟筛选条件
Map<String, List<String>> conditions = new HashMap<>();
conditions.put("userName", Arrays.asList("张三", "李四"));
conditions.put("nex", Arrays.asList("男", "1"));
// 返回最终的结果
List<bean> collect = beans.stream()
.filter(bean -> {
conditions.forEach((key, list) -> {
String s = getObject(bean, key).toString();
if (!list.contains(s)) {
bean.setIsShow(false);
}
});
return bean.getIsShow();
})
.collect(Collectors.toList());
collect.forEach(System.out::println);
}
public static Object getObject(Object obj, String filedName) {
Object res = null;
try {
String methodName = "get" + filedName.substring(0, 1).toUpperCase(Locale.ROOT) + filedName.substring(1);
Method method = obj.getClass().getMethod(methodName);
res = method.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
}
@Data
@ToString
class bean {
private String userName;
private String nex;
private String eat;
private Boolean isShow;
public bean() {
this.isShow = true;
}
public bean(String userName, String nex, String eat) {
this.userName = userName;
this.nex = nex;
this.eat = eat;
this.isShow = true;
}
}
java实现多条件筛选返回条件
最新推荐文章于 2023-11-27 22:10:13 发布