我正在学习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,无法对其进行任何方法调用。终端操作是结束流管道并产生结果(或副作用)的操作。

因此,我相信您可以做的最好的事情就是继续使用已有的代码。恕我直言,很好。

07-28 04:40