使用流将String转换为ArrayList <integer>

时间:2019-01-28 14:12:29

标签: java java-8 java-stream

我需要将String转换为ArrayList。

String accountNumberValue = "151616165132132";

我尝试执行此操作,但是它看起来像是将char分别解析为StringInteger的硬编码:

    ArrayList<Integer> accNumArray = accountNumberValue.chars()
                         .map((s)-> Integer.parseInt(String.valueOf(s)))
                         .collect(Collectors.toList());

有什么简单的方法吗?

3 个答案:

答案 0 :(得分:2)

您可以这样做:

List<Integer> result=accountNumberValue
                     .chars()   //Get IntStream from a string with char codes
                     .map(Character::getNumericValue) //Map to the actual int
                     .boxed()  //Box the intstream 
                     .collect(Collectors.toList());  //Collect

答案 1 :(得分:1)

您可以使用split进行一次解析:

List<Integer> accNumArray = 
               Arrays.stream(accountNumberValue.split(""))
                     .map(Integer::parseInt)
                     .collect(Collectors.toList());

答案 2 :(得分:1)

也许没有太大的改进,但是您可以使用Character#getNumericValue

List<Integer> accNumArray = accountNumberValue.chars()
    .map(c -> new Integer(Character.getNumericValue(c)))
    .collect(Collectors.toList());