我正在学习lambda表达式。
给定一个名称列表,我想计算以N
开头的名称的数量。
我是这样做的:
final static List<String> friends = Arrays.asList("Brian", "Nate", "Neal", "Raju", "Sara", "Scott");
public static int countFriendsStartWithN() {
return Math.toIntExact(friends
.stream()
.filter(name -> name.startsWith("N"))
.count());
}
调用count方法返回一个原始的
long
,但是我想要一个int
。我使用
Math.toIntExact
来获取long
值作为int
。是否可以直接在lambda表达式内部获取
int
值? 最佳答案
不,您无法将对toIntExact
的调用放入方法调用链(流管道)中。这是因为count
是终端操作,并且返回原始long
,无法对其进行任何方法调用。终端操作是结束流管道并产生结果(或副作用)的操作。
因此,我相信您可以做的最好的事情就是继续使用已有的代码。恕我直言,很好。