Java 8将int的int转换为List <integer>

时间:2016-11-29 15:16:42

标签: java java-8 java-stream collectors

我有一个字符串:

String ints = "1, 2, 3";

我想将其转换为整体列表:

List<Integer> intList

我可以通过这种方式将其转换为字符串列表:

List<String> list = Stream.of("1, 2, 3").collect(Collectors.toList());

但不要列出整体。

有什么想法吗?

4 个答案:

答案 0 :(得分:19)

您需要拆分字符串并从每个部分中制作一个Stream。方法splitAsStream(input)正是这样做的:

Pattern pattern = Pattern.compile(", ");
List<Integer> list = pattern.splitAsStream(ints)
                            .map(Integer::valueOf)
                            .collect(Collectors.toList());

它返回输入字符串部分的Stream<String>,稍后您可以将其映射到Integer并收集到列表中。

请注意,您可能希望将模式存储在常量中,并在每次需要时重复使用它。

答案 1 :(得分:17)

正则表达式拆分是您正在寻找的

Stream.of(ints.split(", "))
      .map(Integer::parseInt)
      .collect(Collectors.toList());

答案 2 :(得分:2)

首先,将字符串拆分为单个数字,然后将这些(仍然是字符串)转换为实际整数,最后将它们收集到列表中。您可以通过链接流操作来完成所有这些操作。

String ints = "1, 2, 3";
List<Integer> intList = Stream
        .of(ints.split(", "))
        .map(Integer::valueOf)
        .collect(Collectors.toList());
System.out.println(intList);  // [1, 2, 3]

答案 3 :(得分:2)

您可以使用Array函数asList,然后将其转换为java8方式。

不要忘记删除空格。

 List<Integer> erg = Arrays.asList(ints.replace(" ", "").split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());

编辑: 对不起,我没有看到它是一个字符串,认为它是一个String数组。