用java8写一个从配置文件中读取条件,并将list中满足条件的数据移除的共通方法
时间: 2024-05-05 10:15:56 浏览: 190
java读取配置文件
5星 · 资源好评率100%
以下是一个示例代码,假设配置文件名为config.properties,条件为age大于等于18:
```java
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.function.Predicate;
public class ConfigReader {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("John", 20));
persons.add(new Person("Mary", 16));
persons.add(new Person("Mike", 25));
// 读取配置文件中的条件
Properties prop = new Properties();
try (InputStream input = ConfigReader.class.getClassLoader().getResourceAsStream("config.properties")) {
prop.load(input);
} catch (IOException ex) {
ex.printStackTrace();
}
int ageThreshold = Integer.parseInt(prop.getProperty("ageThreshold"));
// 移除满足条件的数据
Predicate<Person> ageFilter = p -> p.getAge() >= ageThreshold;
persons.removeIf(ageFilter);
// 输出结果
System.out.println(persons);
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}
```
config.properties文件内容:
```
ageThreshold=18
```
输出结果:
```
[Person{name='Mary', age=16}]
```
以上代码中,我们通过Java自带的Properties类读取配置文件中的条件,然后使用Java 8的Predicate函数式接口过滤符合条件的数据,最后使用List的removeIf方法将符合条件的数据移除。这个方法可以适用于各种不同类型的List,只需要将Person类替换成相应的类型即可。
阅读全文