Java将字符串拆分为Double []

Ela*_*da2 4 java arrays list java-8

我有这个字符串:

((39.4189453125 37.418708616699824,42.0556640625 37.418708616699824,43.4619140625 34.79181436843146,38.84765625 33.84817790215085,39.4189453125 37.418708616699824))

我想将它转换为Double []java数组.

我试过了:

String[]tokens = myString.split(" |,");
Arrays.asList(tokens).stream().map(item -> Double.parseDouble(item)).collect(Collectors.toList()).toArray();
Run Code Online (Sandbox Code Playgroud)

是否有更好,更有效的方式而不是数组列表数组转换?

Eug*_*ene 15

Pattern pattern = Pattern.compile("-|\\.");

pattern.splitAsStream(test) // your String
       .map(Double::parseDouble)
       .toArray(Double[]::new);
Run Code Online (Sandbox Code Playgroud)

你的模式也很奇怪,看起来这样会更合适 [-,\\s]+

  • 喜欢`splitAsStream` - 一个很棒的新功能. (3认同)
  • @khelwood meh - 装在这里或装在那里; 没有太大的区别. (3认同)
  • @BoristheSpider我*喜欢*更多java-9中的`Scanner.findAll` (2认同)
  • "Double :: valueOf"不会优于"Double.parseDouble"(它返回需要自动装箱的"double")吗? (2认同)