2015-04-16 110 views
3

我想知道如何将ArrayList<String>转换为ArrayList<Integer>Java ArrayList <Integer> to ArrayList <String>&反之亦然

我有这样的代码:

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]] 

这是我的问题:我如何才能扭转这种procces(获取数字的一行,并把它放在数字ArrayList

它应该是这样的:

sNumbers 
0 [1, 2, 3] --> 

numbers 
0 [1] 
1 [2] 
2 [3] 
(without brackets) 

回答

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]

8

List<Integer>上调用toString将返回的String表示。 "[1,2,3]"),而不是包含其每个内容的String表示的List<String>

您必须手动填写您String S:

for (Integer i: numbers) { 
    sNumbers.add(String.valueOf(i)); 
} 

注意

有可能是一些发烧友的东西,你可以在VS势在必行编码的声明条款与Java 8做的 - 不幸的是我不目前安装了jdk。

希望别人会挑选这件事,并回答对Java 8

+0

这是正确的,但我的意思是别的东西。阵列号改变时,我将它保存到sNumbers。按照你的方式,我在两个数组之间没有任何分隔符。我只是想避免使用二维数组 – Jump3r

+0

我读到这个问题的方式,他们对获取ArrayList的字符串表示(即单个字符串:[1,2,3])感到满意,他们只是想要能够扭转这一过程;采取字符串'[1,2,3]'并创建一个带有三个元素1,2和3的'ArrayList '。这似乎并不像它回答所问的问题(对我来说,你的理解明显不同)。 –

+0

是的,我同意。当我得到新的数字内容(在sNumbers中保存数字后,我将其清除),我想将它放到sNumbers Array中,然后我想从数组中选取一行。如果需要,我可以粘贴所有代码。 – Jump3r

1

只是循环阵列上

for(int i : numbers) sNumbers.add(String.valueOf(i)); 
5

正如@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

+0

加1为Java 8部分! – Mena

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())); 
} 
相关问题