java list 符合条件的迁移到另一个list
时间: 2023-08-22 09:06:42 浏览: 90
list to list 将list内容移到另一个list
4星 · 用户满意度95%
可以使用Java 8的Stream API来实现将符合条件的元素从一个List迁移到另一个List。具体实现可以参考以下示例代码:
```
List<String> sourceList = Arrays.asList("apple", "banana", "orange", "pear", "grape");
List<String> targetList = new ArrayList<>();
// 将长度大于5的水果从sourceList迁移到targetList
sourceList.stream()
.filter(fruit -> fruit.length() > 5)
.forEach(targetList::add);
// 输出结果
System.out.println("sourceList: " + sourceList); // [apple, banana, orange, pear, grape]
System.out.println("targetList: " + targetList); // [banana, orange]
```
在上述代码中,我们通过Stream API筛选出长度大于5的水果,然后使用forEach方法将它们添加到targetList中。需要注意的是,我们在forEach方法中使用了方法引用“targetList::add”,这等价于使用lambda表达式“(fruit) -> targetList.add(fruit)”来添加元素。
如果需要将符合条件的元素从原始List中移除,则可以在forEach方法中使用List的remove方法来实现。例如:
```
List<String> sourceList = Arrays.asList("apple", "banana", "orange", "pear", "grape");
// 将长度大于5的水果从sourceList移除并添加到targetList
List<String> targetList = new ArrayList<>();
sourceList.stream()
.filter(fruit -> fruit.length() > 5)
.forEach(fruit -> {
sourceList.remove(fruit);
targetList.add(fruit);
});
// 输出结果
System.out.println("sourceList: " + sourceList); // [apple, pear, grape]
System.out.println("targetList: " + targetList); // [banana, orange]
```
在上述代码中,我们使用forEach方法的lambda表达式先将符合条件的水果从sourceList中移除,然后再将它们添加到targetList中。需要注意的是,我们不能在使用Stream API的过程中修改原始List,因此必须先将符合条件的元素保存到另一个List中再进行删除操作。
阅读全文