2015-04-16 78 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())); 
} 
相關問題