我想知道如何将ArrayList<String>
转换为ArrayList<Integer>
。
我有这段代码:
ArrayList<String> sNumbers = new ArrayList<String>();
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
sNumbers.add(numbers.toString());
System.out.println(sNumbers);//for testing
我得到了这个:
[[1, 2, 3]]
这就是我的问题:如何扭转这一过程(获取一行数字并将其加入数字ArrayList
)
应该是这样的:
sNumbers
0 [1, 2, 3] -->
numbers
0 [1]
1 [2]
2 [3]
(without brackets)
答案 0 :(得分:8)
在toString
上调用List<Integer>
将返回String
的{{1}}表示(即List
),而不是包含"[1,2,3]"
的{{1}}每个内容的List<String>
表示。
您必须手动填写String
:
String
注意强>
在声明性和命令式编码方面,你可以用Java 8做一些更高级的东西 - 不幸的是我现在还没有安装jdk。
希望其他人会选择这个并回答Java 8。
答案 1 :(得分:6)
正如@mena所说,你可以这样做:
纯Java:
List<String> sNumbers = new ArrayList<String>();
for (Integer i: numbers) {
sNumbers.add(String.valueOf(i));
}
JDK 8 - 地图:
List<String> sNumbers = numbers.stream().map(
n -> n.toString()).collect(Collectors.toList()
);
或者使用番石榴库,它与JDK8类似。
我假设您可以在此处找到更多示例: Convert List<String> to List<Integer> directly
答案 2 :(得分:2)
这是一个简单的算法,用于将数组的字符串表示形式转换回数组
public static ArrayList<Integer> arrayStringToIntegerArrayList(String arrayString){
String removedBrackets = arrayString.substring(1, arrayString.length() - 1);
String[] individualNumbers = removedBrackets.split(",");
ArrayList<Integer> integerArrayList = new ArrayList<>();
for(String numberString : individualNumbers){
integerArrayList.add(Integer.parseInt(numberString.trim()));
}
return integerArrayList;
}
你可以用
来调用它System.out.println(arrayStringToIntegerArrayList(sNumbers.get(0)));
它会返回ArrayList<Integer>
,其值为[1, 2, 3]
答案 3 :(得分:1)
只需遍历数组
for(int i : numbers ) sNumbers.add(String.valueOf(i));
答案 4 :(得分:0)
您可以使用以下循环:
//number 1
for(Integer number : numbers){
sNumbers.add(String.valueOf(number));
}
//number 2
for(int i = 0; i < numbers.size(); i++){
sNumbers.add(String.valueOf(numbers.get(i)));
}
//number 3
int j = 0;
while(numbers.size() > j){
sNumbers.add(String.valueOf(numbers.get(j)));
j++;
}
//number 4
Iterator<Integer> iterator = numbers.iterator();
while(iterator.hasNext()){
sNumbers.add(String.valueOf(iterator.next()));
}