java8写一个读取配置文件中的多重条件,对list中满足全部条件的数据进行skip处理的共通方法
时间: 2024-06-11 09:07:38 浏览: 105
以下是一个示例代码,用于读取配置文件中的多重条件,并对列表中满足所有条件的数据进行跳过处理。
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class ConfigReader {
public static void main(String[] args) throws IOException {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("date");
list.add("elderberry");
Properties prop = new Properties();
InputStream input = new FileInputStream("config.properties");
prop.load(input);
String[] conditions = prop.getProperty("conditions").split(",");
for (String condition : conditions) {
list.removeIf(s -> s.contains(condition.trim()));
}
System.out.println(list);
}
}
```
在上面的示例中,我们首先读取了一个列表,该列表包含了一些水果名称。然后,我们读取了一个配置文件,该配置文件包含了多个条件,这些条件用逗号分隔。我们通过 `getProperty()` 方法获取条件字符串,并使用 `split()` 方法将其拆分为条件数组。
接下来,我们使用 `removeIf()` 方法从列表中删除包含任何条件的所有元素。我们使用 `trim()` 方法删除条件字符串的前导和尾随空格。
最后,我们打印了列表,其中包含所有不包含任何条件的元素。这里使用了Java 8的Lambda表达式和Stream API,可以更简洁地实现这个方法。
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class ConfigReader {
public static void main(String[] args) throws IOException {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("date");
list.add("elderberry");
Properties prop = new Properties();
InputStream input = new FileInputStream("config.properties");
prop.load(input);
String[] conditions = prop.getProperty("conditions").split(",");
list = list.stream()
.filter(s -> {
for (String condition : conditions) {
if (s.contains(condition.trim())) {
return false;
}
}
return true;
})
.collect(Collectors.toList());
System.out.println(list);
}
}
```
在上面的示例中,我们使用了 `stream()` 方法将列表转换为流,并使用了 `filter()` 方法来筛选出不包含任何条件的元素。我们使用了 `collect()` 方法来将流转换回列表。
阅读全文