sla*_*dan 49 java regex split java-stream
将String拆分为Stream 的最佳方法是什么?
我看到了这些变化:
Arrays.stream("b,l,a".split(","))Stream.of("b,l,a".split(","))Pattern.compile(",").splitAsStream("b,l,a")我的优先事项是:
一个完整的,可编译的例子:
import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.stream.Stream;
public class HelloWorld {
public static void main(String[] args) {
stream1().forEach(System.out::println);
stream2().forEach(System.out::println);
stream3().forEach(System.out::println);
}
private static Stream<String> stream1() {
return Arrays.stream("b,l,a".split(","));
}
private static Stream<String> stream2() {
return Stream.of("b,l,a".split(","));
}
private static Stream<String> stream3() {
return Pattern.compile(",").splitAsStream("b,l,a");
}
}
Run Code Online (Sandbox Code Playgroud)
Hol*_*ger 67
好吧,既然String.split返回一个数组,我总是推荐String.split作为数组流的规范习语.String[]是一个可变参数这恰好接受的阵列,由于该可变参数的方法是通过阵列实现,并有当可变参数被引入Java和现有方法改装到可接受可变参数兼容性问题的事实方法.
Arrays.stream具有直接流式传输而不是创建中间阵列的优势.因此,对于大量子字符串,这可以具有性能优势.另一方面,如果分隔符是微不足道的,即单个文字字符,则Stream.of实现将通过快速路径而不是使用正则表达式引擎.所以在这种情况下,答案并非无足轻重.
如果流发生在另一个流内部,例如Stream.of,优点是必须仅分析模式一次,而不是分析外部流的每个字符串.
| 归档时间: |
|
| 查看次数: |
32403 次 |
| 最近记录: |