Java,从String读入ArrayList

时间:2013-03-26 14:28:07

标签: java string arraylist

我有一个包含此内容的字符串12345

将这些单个数字读入整数ArrayList的最佳方法是什么?像这样:

{1, 2, 3, 4, 5}

这是我到目前为止所做的:

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Integer.parseInt(data.valueOf(i));
    this.points.add(new Integer(pt));
}

问题在于我获得了[(0),(1),(2),...]而不是所需的数字。

7 个答案:

答案 0 :(得分:4)

您需要使用charAt(i)方法,valueOf(i)返回i的字符串值,而不是i char

答案 1 :(得分:2)

您可以使用String.charAt从该位置获取相应的字符char。要将其添加到列表,您需要转换为int

String data = getData();
this.points=new ArrayList<Integer>();
List<Integer> list = new ArrayList<Integer>();

for (int i = 0; i < data.length(); i++) {
    this.points.add(Character.getNumericValue(data.charAt(i)));
}

答案 2 :(得分:2)

此解决方案应该可以正常工作并将内存分配降至最低。请注意,您需要确保数据上只存在数值。

String data = getData();
this.points = new ArrayList<Integer>(); //if this is a field you should use points.clear() instead.

for (int i=0; i<data.length(); i++) {
  this.points.add(Characacter.getNumericValue(data.charAt(i)));
}

你的问题是你试图在索引上使用String.valueOf方法,这实际上会在每次迭代中返回i的值

答案 3 :(得分:1)

Integer.parseInt将采用整数;你想逐个数字地拿它。为此,请改用Character.getNumericValue

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Character.getNumericValue(data.charAt(i));
    this.points.add(new Integer(pt));
}

答案 4 :(得分:0)

使用data.charAt()代替valueOf。因此,您的代码应该类似于:

        String data = getData();
        for (int i = 0; i < data.length(); i++) {
            int pt = Integer.parseInt(data.valueOf(data.charAt(i)));
            this.points.add(new Integer(pt));
        }
        for (int i = 0; i < points.size(); i++) {
            System.out.println(this.points.get(i));

        }

答案 5 :(得分:0)

试试这个

String data = getData();
this.points=new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    this.points.add(Integer.parseInt(s.charAt(i) + ""));
}

答案 6 :(得分:-1)

你得到这样的所有整数:

String data = "254980";
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    list.add(new Integer(data.substring(i,i+1)));
}

测试:

for (Integer integer : list) {
    System.out.print(integer);
}

打印

2 
5 
4 
9 
8 
0