list.stream().filter写法
时间: 2023-11-23 17:58:13 浏览: 27
在Java 8中,可以使用Stream API来对集合进行操作。其中,filter()方法可以用于过滤集合中的元素。下面是一个示例代码,演示了如何使用filter()方法来过滤一个整数列表中的偶数元素:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出 [2, 4, 6, 8, 10]
```
在上面的代码中,我们首先创建了一个整数列表numbers,然后使用stream()方法将其转换为一个流。接着,我们使用filter()方法来过滤出其中的偶数元素,最后使用collect()方法将过滤后的结果收集到一个新的列表中。
相关问题
java list stream写法获取唯一匹配条件的对象
假设你有一个包含一系列对象的List,你想要使用Java 8的Stream API来获取其中一个唯一匹配某个条件的对象,可以按照以下方式实现:
```java
Optional<Object> result = list.stream()
.filter(obj -> obj.getSomeProperty().equals(someValue))
.findFirst();
```
在这里,我们使用`filter`方法筛选出所有匹配某个条件的对象,然后使用`findFirst`方法获取第一个匹配的对象。由于结果可能为空,我们使用`Optional`类型来包装结果。
如果你确定结果不为空,你可以使用以下方式获取对象本身:
```java
Object obj = result.get();
```
这里假设我们已经通过`findFirst`方法获取了结果,所以我们可以使用`get`方法来获取对象本身。如果结果为空,这个调用将会抛出一个`NoSuchElementException`异常。
检查写法是否正确 List<Integer> list = new ArrayList<>(); List<MemberLevel> memberLevels = memberLevelListResp.getMemberLevelList().stream().filter(memberLevel -> memberLevel.getLevel().equals("1")).collect(Collectors.toList()); for (MemberLevel memberLevel : memberLevels) { List<BenefitPackage> packageList = memberLevel.getPackageList(); for (BenefitPackage benefitPackage : packageList) { for (MemberBenefit memberBenefit : benefitPackage.getBenefitList()) { if (memberBenefit.getBenefitNo().equals("RHR041")) { System.out.println("-----" + memberBenefit.getBenefitNo()+"--" + memberBenefit.getBenefitVal()); list.add(Integer.valueOf(memberBenefit.getBenefitVal())); } } } }
你的写法看起来是正确的,对于每个MemberLevel对象,通过getPackageList()方法获取到其对应的所有BenefitPackage对象,然后遍历每个BenefitPackage对象,再遍历每个BenefitPackage对象中的MemberBenefit对象,如果其BenefitNo属性为"RHR041",则将其BenefitVal属性转为Integer类型,并添加到list中。
如果你的list.add()方法没有生效,建议你在循环结束之后,输出一下list的内容,检查一下其中是否包含了你想要加入的元素。如果是空的,那么可能是因为没有符合条件的MemberBenefit对象,或者是因为你的代码没有正确执行到list.add()这一行。