![](/img/trans.png)
[英]Java -read from a text file and Add item( string , arrayList) to hashmap
[英]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.