.flatMap
listOfLists.stream()
将外层的列表转换为一个流,其中每个元素都是一个List<String>
。.flatMap(innerList -> innerList.stream())
对流中的每个innerList
执行一个函数,该函数将innerList
转换为一个新的流。然后,flatMap
将所有这些内部流连接成一个单一的流。.collect(Collectors.toList())
将这个单一的流收集到一个新的列表中。
List<List<String>> listOfLists = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d", "e"),
Arrays.asList("f")
);
List<String> flattenedList = listOfLists.stream()
.flatMap(innerList -> innerList.stream()) // 将每个内部列表转换为一个流,并展平
.collect(Collectors.toList()); // 收集到一个列表中
System.out.println(flattenedList); // 输出: [a, b, c, d, e, f]
Optional<OrgPO> opt = orgList.stream().filter(a -> a.getOrgCode().equals(orgCode)).findAny()
- stream():
这是List
接口中的一个方法,它将列表转换为一个Stream,以便我们可以对其进行各种操作。 - filter(a -> a.getOrgCode().equals(orgCode)):
这是Stream API中的一个中间操作,用于过滤Stream中的元素。这里,我们使用了一个Lambda表达式a -> a.getOrgCode().equals(orgCode)
作为filter
方法的参数。这个Lambda表达式表示:对于Stream中的每一个OrgPO
对象a
,检查其orgCode
属性是否等于给定的orgCode
。如果等于,则该对象会被保留在Stream中;如果不等于,则该对象会被从Stream中移除。 - findAny():
这是Stream API中的一个终端操作,用于从Stream中返回任意一个匹配的元素(如果存在的话)。由于我们之前已经使用filter
方法过滤了Stream,所以findAny
方法会返回第一个(或任意一个)与给定orgCode
匹配的OrgPO
对象。如果没有找到匹配的元素,则返回一个空的Optional<OrgPO>
对象。 - Optional<OrgPO> opt:
这是一个Optional<OrgPO>
类型的变量,用于存储findAny
方法的返回结果。Optional
是Java 8引入的一个容器对象,用于可能不存在的值。它可以帮助我们避免空指针异常(NullPointerException),并提供了一种更优雅的方式来处理可能为null的值。在这个例子中,如果找到了匹配的OrgPO
对象,则opt
将包含一个非空的Optional
对象,其中包含了该对象;如果没有找到匹配的元素,则opt
将包含一个空的Optional
对象。