将数字字符串转换为整数列表

Shi*_*ari 2 java java-8 java-stream

我正在对 java 8 流功能进行一些练习,因此想到将知识应用于将数字字符串转换为整数列表的问题

一个典型的测试看起来像

 @Test
    public void testGetListofIntegersFromString(){
        List<Integer> result = getIntegers("123456780");
        assertEquals(Arrays.asList(1,2,3,4,5,6,7,8,0),result);
    }
Run Code Online (Sandbox Code Playgroud)

我写了下面的方法

List<Integer> getIntegers(String value) {
       return IntStream.rangeClosed(0, value.length() - 1).map(i -> Integer.valueOf(value.substring(i,i+1))).collect(?????);
    }
Run Code Online (Sandbox Code Playgroud)

我被困在使用哪个函数来获取我尝试过的整数列表collect(Collectors.toList())它给出了编译错误。

请建议我们是否可以按照不同的方法来解决这个问题。

Tag*_*eev 5

使用 String.chars():

"123456780".chars().map(c -> c-'0').boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • @Win.ubuntu,因为“0”对读者来说不那么晦涩。我个人知道很多十进制和十六进制的 ASCII 码,但我想没有超过 10% 的程序员可以很容易地回答“什么符号对应于 ASCII 码 48”。 (3认同)
  • @Tagir Valeev:是的,即使我们知道代码点,“48”也不比“0”更具优势。*如果*我们真的必须在代码中炫耀,我们无论如何都使用`c -&gt; c&amp;017`...... (3认同)
  • 你也可以考虑`"123456780".chars().mapToObj(Character::getNumericValue).collect(Collectors.toList());` (2认同)