java8写一个将list中某几个字段的值符合条件的数据出力到新的list中的共通方法
时间: 2024-05-06 18:20:40 浏览: 14
假设我们有一个Person类,其中有3个字段:name、age和gender。现在我们需要一个方法,将List中年龄大于等于18岁的人的姓名和性别输出到新的List中。可以使用Java8的Stream API来实现:
```
public static List<String> filterByAge(List<Person> persons) {
return persons.stream()
.filter(person -> person.getAge() >= 18)
.map(person -> person.getName() + "," + person.getGender())
.collect(Collectors.toList());
}
```
这个方法接收一个Person对象的List作为参数,使用stream()方法将List转换为Stream对象,然后使用filter()方法过滤出年龄大于等于18岁的人,接着使用map()方法将符合条件的人的姓名和性别组成一个字符串,最后使用collect()方法将所有符合条件的人的姓名和性别组成的字符串收集到一个新的List中并返回。
相关问题
java8写一个将list中a的值不等于3或者5的数据skip掉的共通方法
可以使用Java 8的Stream API来实现:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream()
.filter(a -> a != 3 && a != 5) // 过滤掉a的值等于3或者5的元素
.collect(Collectors.toList()); // 将剩余的元素收集到一个新的List中
System.out.println(result); // 输出 [1, 2, 4]
```
上面的代码中,使用了`stream()`方法将List转换为Stream,然后使用`filter()`方法过滤掉a的值等于3或者5的元素,最后使用`collect()`方法将剩余的元素收集到一个新的List中。
如果想要对原有的List进行修改,可以使用`removeIf()`方法:
```java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
list.removeIf(a -> a == 3 || a == 5); // 移除a的值等于3或者5的元素
System.out.println(list); // 输出 [1, 2, 4]
```
上面的代码中,使用了`removeIf()`方法移除a的值等于3或者5的元素。注意,这里需要使用`new ArrayList<>(list)`将原有的List复制一份,否则直接操作原有的List可能会导致ConcurrentModificationException异常。
java8写一个从配置文件中读取条件,根据条件将list的数据进行skip的共通方法
以下是一个Java8的示例代码,用于读取配置文件中的条件并根据条件跳过List中的元素:
```
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;
public class ListSkipper {
public static void skip(List<?> list) {
Properties props = new Properties();
try (InputStream in = new FileInputStream("config.properties")) {
props.load(in);
} catch (IOException e) {
e.printStackTrace();
return;
}
String condition = props.getProperty("skip.condition");
if (condition == null) {
return;
}
int skipCount = Integer.parseInt(props.getProperty("skip.count", "0"));
list.stream()
.skip(condition.equals("even") ? skipCount : 0)
.filter((item, index) -> index % 2 != 0)
.skip(condition.equals("odd") ? skipCount : 0)
.forEach(System.out::println);
}
}
```
此代码需要一个名为`config.properties`的配置文件,该文件应该在类路径下,并包含两个属性:
```
skip.condition=even
skip.count=2
```
其中`skip.condition`属性指定跳过偶数或奇数元素,`skip.count`属性指定要跳过的元素数量。
在本例中,`skip()`方法使用Java 8的流API来跳过列表中的元素。根据配置文件中指定的条件,它将跳过偶数或奇数索引的元素。它还将根据配置文件中指定的数量跳过一定数量的元素。最后,它将过滤剩余的元素,只保留奇数或偶数索引,并将它们打印到控制台上。
要使用此方法,请将其添加到您的Java项目中,并在需要跳过列表元素的地方调用它。例如:
```
List<String> myList = Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
ListSkipper.skip(myList);
```
这将打印出以下内容:
```
b
d
f
h
j
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)