Java ArrayList <integer>到ArrayList <string>&amp;反之亦然</string> </integer>

时间:2015-04-16 12:11:36

标签: java arraylist

我想知道如何将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) 

5 个答案:

答案 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()));
}