Java 字符串拆分为两个列表

Java 字符串拆分为两个列表,java,string,split,Java,String,Split,我想拆分一行,可能如下所示: 6:8.0 7:36.0 14:9.0 15:31.0 22:5.0 23:21.0 30:2.0 31:12.0 38:40.0 39:137.0 46:50.0 47:133.0 54:35.0 55:106.0 62:16.0 第一个值是x第二个值是y。 现在,我希望有两个列表ListX和ListY 我试过一个接一个地做。您可以在其中搜索“:”,然后来回查找号码。但必须有一个更快的方法。特别是关于绳子的长度,它会变得很大。你知道吗? 谢谢您可以尝试使用Str

我想拆分一行,可能如下所示:

6:8.0 7:36.0 14:9.0 15:31.0 22:5.0 23:21.0 30:2.0 31:12.0 38:40.0 39:137.0 46:50.0 47:133.0 54:35.0 55:106.0 62:16.0
第一个值是
x
第二个值是
y
。 现在,我希望有两个列表
ListX
ListY

我试过一个接一个地做。您可以在其中搜索“:”,然后来回查找号码。但必须有一个更快的方法。特别是关于绳子的长度,它会变得很大。你知道吗?
谢谢

您可以尝试使用
String.split()


下面是完成您想做的事情的完整代码

import java.util.*;

public class IntegerDoubleExtractor{

     public static void main(String []args){
        String test = "6:8.0 7:36.0 14:9.0 15:31.0 22:5.0 23:21.0 30:2.0 31:12.0 38:40.0 39:137.0 46:50.0 47:133.0 54:35.0 55:106.0 62:16.0";

        List<Integer> x = new ArrayList<Integer>();
        List<Double> y = new ArrayList<Double>();

        for(String xy : test.split(" ")) {
            String xys[] = xy.split(":");
            x.add(Integer.parseInt(xys[0]));
            y.add(Double.parseDouble(xys[1]));
        }
        System.out.println(x);
        System.out.println(y);
     }

}
import java.util.*;
公共类整数双提取器{
公共静态void main(字符串[]args){
字符串测试=“6:8.0 7:36.0 14:9.0 15:31.0 22:5.0 23:21.0 30:2.0 31:12.0 38:40.0 39:137.0 46:50.0 47:133.0 54:35.0 55:106.0 62:16.0”;
列表x=新的ArrayList();
列表y=新的ArrayList();
用于(字符串xy:test.split(“”){
字符串xys[]=xy.split(“:”);
x、 add(Integer.parseInt(xys[0]);
y、 add(Double.parseDouble(xys[1]);
}
系统输出println(x);
系统输出打印项次(y);
}
}
您也可以使用,并且在此过程中不需要中间字符串或数组:

Scanner scanner = new Scanner(str);
scanner.useDelimiter(Pattern.compile("[:\\s]"));
while (scanner.hasNext()) {
    listX.add(scanner.nextInt());
    listY.add(scanner.nextDouble());
}

使用String.Split。。。您可以在每个空格处拆分,遍历结果列表,然后使用“:”再次拆分。从这里,您可以在两个列表中插入单独的值。@MichaelFaist它们是……在您发表评论之前,我已经更改了它们。@JürgenK。没问题!很高兴我能帮忙!
Scanner scanner = new Scanner(str);
scanner.useDelimiter(Pattern.compile("[:\\s]"));
while (scanner.hasNext()) {
    listX.add(scanner.nextInt());
    listY.add(scanner.nextDouble());
}