Преобразовать строку в ArrayList <Integer>с потоком - PullRequest
0 голосов
/ 28 января 2019

Мне нужно преобразовать String в ArrayList.

String accountNumberValue = "151616165132132";

Я пытаюсь сделать это, но это выглядит как жестко закодированный с двойным анализом char в String и Integer:

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

Есть ли простой способ?

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Возможно, нет особого улучшения, но вы можете использовать Character#getNumericValue:

List<Integer> accNumArray = accountNumberValue.chars()
    .map(c -> new Integer(Character.getNumericValue(c)))
    .collect(Collectors.toList());
0 голосов
/ 28 января 2019

Вы можете сделать это так:

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
0 голосов
/ 28 января 2019

Вы можете сделать это за один раз, используя split:

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