当前位置: 首页 > 知识库问答 >
问题:

Java Streams Collectors.toList()with map()vs mapToInt()[duplicate]

东郭远航
2023-03-14

我有这样一个目标:

String[] stringNum = new String[] {"1", "2", "3", "4", "5", "6", "7"};

我很难理解为什么会这样:

 List<Integer> intNums = Arrays.stream(stringNum)
                                .map(Integer::parseInt)
                                .collect(Collectors.toList());
 List<Integer> intNums = Arrays.stream(stringNum)
                                .mapToInt(Integer::parseInt)
                                .collect(Collectors.toList());

共有1个答案

空浩淼
2023-03-14

.map(integer::parseInt)返回,而不是IntStream。这就是第一个代码片段起作用的原因。

IntStream没有接受收集器Collection()方法。因此,将映射到IntStream的第二个代码段不能使用.Collection(Collectors.ToList())

若要使用intStreamcollect(supplier supplier,objintconsumer accumulator,biconsumer combiner) 方法,您可以编写:

List<Integer> intNums = Arrays.stream(stringNum)
                              .mapToInt(Integer::parseInt)
                              .collect(ArrayList::new,ArrayList::add,ArrayList::addAll);

但是,由于您的输出是列表 ,因此没有必要创建中间的intStream,因为这将需要稍后将int装箱。您的stream 变体(第一个片段)更有意义。

 类似资料:
  • 问题内容: 我在jsp页面中看到以下错误- 我看到了一篇关于此的文章,并尝试了一些建议的方法。BalusC提供了很好的输入- JSTL1.2和Standard.jar不能一起使用。我做到了,它解决了一段时间的问题- 但它再次出现。我不确定是否还有jar碰撞。我已经将所有jar定义为Maven中的依赖项。以下是我指定的依赖项pom.xml- 问题答案: 您将需要在项目中导入JSP API,而Serv

  • 问题内容: This question already has answers here : How to nicely format floating numbers to String without unnecessary decimal 0? (26 answers) Closed 6 years ago. For example I need to become , or to beco

  • 问题内容: 我正在创建一个需要存储键值对的程序。该程序需要接受键形式的请求,并返回相应的值。 问题在于每个键有时有多个值,并且map类不允许重复的键。 这些值是数字,因此无法像使用字符串那样有意义地连接这些值。 对于每个键可以有多个数值的事实,是否有任何优雅的解释方法?我希望返回每个数字,而不是随机返回一个数字。 问题答案: $ cat YourMap.java public class Your

  • 问题内容: 从MySQL 4.1.0开始,可以在目标表wrt 或某个字段中已经插入的值(使用或或)时添加语句来指定行为。如果表中已经有或个字段的值,则将其替换为。 如果我的表中有多个 字段,该如何处理? 如果任一字段匹配,我只能进行一次更新吗? 仅当两个字段同时匹配时才能更新吗? 问题答案: 考虑 如果a和b是字段,则发生在。同样,当两个或多个条目满足条件时,更新仅执行一次。 此处带有ID和Nam

  • 问题内容: 我已经找到了单独使用mySQL的一些答案,但是我希望有人可以向我展示一种使用PHP处理插入/更新时获取mysql DB最后插入或更新的行的ID的方法。 当前,我有类似这样的内容,其中column3是唯一键,还有一个id列是自动递增的主键: $ my_id在INSERT上是正确的,但是在更新行时(在DUPLICATE KEY UPDATE上)是错误的。 我见过一些人建议您使用类似 在调用

  • 问题内容: 我知道,如果已经有该键的记录,您可以用来更新某个值, 我可以做这个: 但是,如何做到这一点而不必两次写出列和值呢? 问题答案: 不幸的是没有。 您可以不必重复该值而达到一半: 但是您仍然必须列出这些列。

  • 问题内容: 我对MySQL的INSERT … ON DUPLICATE KEY UPDATE 语句的返回值感到困惑。当我在MySQL客户端(mysql终端,phpmyadmin或MySQL Workbench)上尝试使用它时,执行结果将显示以下内容之一: 1 :如果插入了新记录(即没有重复的密钥)。 2 :如果存在重复记录,则更新现有记录。 0 :如果执行更新,但没有更改列值。 这些结果是有道理的

  • 问题内容: 我有一个带有列的基本表: id(主要用于AI) 名称(唯一) 等等 如果唯一列不存在,则插入行,否则更新行…。 问题在于,如果它执行UPDATE,则id列上的auto_increment值会上升。因此,如果执行了大量更新,则id auto_increment会通过屋顶。 显然这是一个错误:http : //bugs.mysql.com/bug.php?id=28781 …但是我在共享主