我需要计算流中的元素并将其分配给一个整数而不进行强制转换。
.count()
确实返回很长
想到了.collect(Collectors.reducing(..))
但无法弄清楚。
我觉得有一些简单的事情我不明白。
My Try:
Stream<String> s = Stream.of("Hallo ", "Test", "String");
Integer count = s.filter(e -> (e.length() >= lb && e.length() <= ub && !e.contains(" ")))
.map(e -> e.toUpperCase())
.distinct()
.collect(Collectors.reducing(0, e -> 1, Integer::sum)));
System.out.println(count);
很简单:不要。
不要施放,但也不要让事情变得过于复杂。
而是调查一下safe从返回的 long 中获取 int 的方法count()
. See here https://stackoverflow.com/questions/1590831/safely-casting-long-to-int-in-java对于初学者:
int bar = Math.toIntExact(someLong);
例如。当您 100% 确定计算值始终适合 int 时,您只需避免捕获可能抛出的 ArithmeticException。而且你仍然有一种良好的感觉,即你无法在没有注意到的情况下“超越”。
但正如所说:当你可以使用时,不要投入时间/精力专门计算你自己的东西built-in计算事物并将其转换为 int/Integer 的功能。请记住:您放入代码中的每个字符都需要read后来就明白了。因此,随着时间的推移,即使“20 个字符”也会增加。因此,当您总是倾向于较短的解决方案时,只要它们易于阅读/理解即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)