初始化一个List,接受来自String数组的字符数组



我认为这更容易理解我的意思显示我的代码

String[] words = text.split(" ");
List<char[]> wordsInChars = new ArrayList<char[]>();
for(String i: words){
wordsInChars.add(i.toCharArray());
}
所以我创建了一个字符串数组,取文本

变量作为输入,然后我想将它传递给List,而不经过那个循环。是否有可能完全跳过for循环?我试过了

List<char[]> wordsInChars = Arrays.asList(Arrays.stream(words).forEach(w -> w.toCharArray()));

无论哪种方式,应该使用哪种方法?for循环的代码可以工作,但我不确定是否只是在声明时做这一切只是更好。

编辑:我实际上用

管理
List<char[]> wordsInChars = Arrays.stream(words).map(w -> w.toCharArray()).collect(Collectors.toList());

但是,对于两者中哪一个是更好的实践,欢迎反馈。

答案是否定的。您正在将string[]转换为List,无论您是自己编写循环还是调用一些方法来为您执行循环,都需要一个循环来迭代并转换这些值。实际上,我们可以认为多个循环是必要的,因为String.toCharArray()方法也遍历字符串中的每个字节,以便使用正确的编码将其转换为char。话虽如此,在代码中使用循环并没有什么错。除非你的代码被非常非常频繁地调用,否则你甚至不会注意到执行时间的差异。

这是一种不同的方式,但它内部仍然有一个循环,所以我们实际上并没有跳过循环。

String words = "This is some text I made.";
List<char[]> s = Pattern.compile( "\s+" ).splitAsStream( words ).map( String::toCharArray ).toList();
for( char[] c : s ) 
System.out.println( Arrays.toString( c ) );

最新更新