java8写一个读取配置文件中的多重条件,对list中满足全部条件的进行skip处理的共通方法
时间: 2024-05-14 17:12:22 浏览: 159
以下是一个简单的实现:
public static <T> List<T> skipByConditions(List<T> list, Properties properties) {
List<T> result = new ArrayList<>();
for (T item : list) {
boolean skip = false;
for (Object key : properties.keySet()) {
String condition = (String) key;
String[] conditions = condition.split("\\|\\|");
boolean match = false;
for (String c : conditions) {
String[] parts = c.split("=");
String property = parts[0].trim();
String value = parts[1].trim();
try {
Field field = item.getClass().getDeclaredField(property);
field.setAccessible(true);
Object fieldValue = field.get(item);
if (fieldValue != null && fieldValue.toString().equals(value)) {
match = true;
break;
}
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
if (!match) {
skip = true;
break;
}
}
if (!skip) {
result.add(item);
}
}
return result;
}
该方法接受一个泛型列表和一个Java Properties对象作为参数。Properties对象中的键值对表示一个多重条件,键是条件字符串,值可以是任何字符串。多重条件由“||”分隔,每个条件由“=”分隔。每个条件都是一个对象的属性和值的键值对,用“=”分隔。
该方法将遍历列表中的每个对象,并检查它是否满足所有条件。如果满足,它将添加到结果列表中。如果不满足条件,它将被跳过。
该方法使用Java反射来获取对象的属性,并使用Java字符串比较来比较属性的值。如果属性值是null,它将被视为不匹配。
阅读全文
相关推荐















