繁体   English   中英

Java,从字符串读入ArrayList

[英]Java, read from a String into an 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),...]而不是所需的数字。

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

您可以使用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)));
}

该解决方案应能有效地使您的内存分配最小。 请注意,您需要确保数据上仅存在数值。

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的值

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));
}

使用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));

        }

尝试这个

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

您将获得所有这样的整数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM