将Arraylist <integer>转换为char []的最优化方法是什么

时间:2019-02-12 06:59:56

标签: java arraylist java-8 java-stream

我想知道反正有可能通过流API进行转换

List<Integer> li = Arrays.asList(1,2,3,45,678); 

char[] ch而不进入String的中间阶段?我找不到一个。

3 个答案:

答案 0 :(得分:4)

可能是一种遍历列表并将值分配给数组中各个索引的方法,如下所示:

IntStream.range(0, li.size())
         .forEach(i -> ch[i] = (char) li.get(i).intValue());

或者如果不是必须的原语,则类似于:

Character[] ch = li.stream()
                   .map(i -> (char) i.intValue())
                   .toArray(Character[]::new);

答案 1 :(得分:0)

我认为最简单的方法是声明一个字符数组,并通过for循环和toArray()函数将列表数组保存在char数组中。

答案 2 :(得分:0)

我实现了解决方案,但是我必须进行一次中间String转换。

List<Integer> li = Arrays.asList(1,2,3,45,678); 
        String Str =li.toString();
        char [] ch = new char[Str.length()];
        for(int i=0;i<Str.length();i++)
        {
         ch[i] =    Str.charAt(i);
        }
        for(char cc:ch)
        {        
            System.out.print(cc);
        }
  

输出:[1、2、3、45、678]