2017-05-23 50 views
1

我有嵌套的ArrayList,看起來像在Java中內部的ArrayList:添加元素嵌套在另一個ArrayList的

myArrayList = [element1, element2, [element3]] 

我想補充的元素,因此ArrayList中會看起來像:

myArraylist = [element1, element2, [element3, element4, element5]] 

我試過用;

myArrayList.get(2).add(elemet4); 
myArrayList.get(2).add(elemet5); 

但結果我:

myArraylist = [element1, element2, [element3], element4, element5] 

任何提示如何解決將非常感激。

編輯: 我的壞,我應該附加Java代碼,避免誤導你們。反正這裏是:

ArrayList<ArrayList<String>> finalArray = new ArrayList<ArrayList<String>>(); 
ArrayList<String> finalArrayTempCopy = new ArrayList<String>(); 
ArrayList<Integer> transactionTemp = new ArrayList<Integer>(); 

private ArrayList<Integer> addTransaction(){ 

     System.out.println("Enter transaction amount:"); 
     int amount = scanner.nextInt(); 
     scanner.nextLine(); 
     transactionTemp.add(Integer.valueOf(amount)); 
     return transactionTemp; 
} 
private int searchName(String name){ 
     int indexImienia = customerName.indexOf(name); 
     return indexImienia; 
    } 

public void sumUp(){ 
     String name = "Tom"; 
     String branch = "First"; 
     int indexImienia = searchName(name); 
     String transactionsAsString = transactionTemp.toString(); 
     finalArrayTemp.add(name); 
     finalArrayTemp.add(branch); 
     finalArrayTemp.add(transactionsAsString); 
     finalArrayTempCopy = new ArrayList<String>(finalArrayTemp); 

     finalArray.add(indexImienia, finalArrayTempCopy); 
} 

代碼以後如果我想補充我用下面的方法

public void addSingleTransaction(){ 
int indexImienia = 0; 
int amount =20; 
finalArray.get(indexImienia).add(2, String.valueOf(amount)); 
} 

編輯我的職位,我意識到問題可能在於與轉換的ArrayList轉換爲字符串單交易並將其作爲字符串添加到finalArray中。無論如何,我會感激你的洞察力。

+4

您能否顯示您的'ArrayList'的確切聲明?我懷疑你要麼使用'ArrayList '或原始類型... – Turing85

+0

可能的重複[在Java中使用列表列表](https://stackoverflow.com/questions/1474954/working-with- java中的列表列表) – KevinO

+0

類型的元素是什麼? –

回答

1

好像你正在尋找:

ArrayList<Object> myArrayList = new ArrayList<Object>(); 
ArrayList<Integer> list1 = new ArrayList<Integer>; 

myArrayList.add(element1); 
myArrayList.add(list1); 

或者

ArrayList<ArrayList<Integer>> myArrayList = new ArrayList<ArrayList<Integer>>(); 
ArrayList<Integer> list1 = new ArrayList<Integer>; 
ArrayList<Integer> list2 = new ArrayList<Integer>; 

list1.add(element1); 
list2.add(element2); 
list2.add(element3); 

myArrayList.add(list1); 
myArrayList.add(list2); 

假設,元素是一個整數

0

由於每個共享的僞代碼,有一些問題與你的主數組聲明。

ArrayList只能有一種類型的數據。因此,你的數組的聲明可以是這樣的:

ArrayList<Element> arr = new ArrayList<Element>(); 

或存儲名單吧:

ArrayList<ArrayList<Element>> ar2 = new ArrayList<ArrayList<Element>>(); 

如果你想同時存儲類型相同的結構值的 可以使用對象存儲任何類型的值,因爲它是所有類的根。 在這種情況下,你的宣言將是這樣的:

 ArrayList<Object> arrOuter = new ArrayList<Object>(); 

    Element e1 = new Element(); 
    Element e2 = new Element(); 
    arrOuter.add(e1); 
    arrOuter.add(e2); 

    ArrayList<Element> arrNested = new ArrayList<Element>(); 
    Element e3 = new Element(); 
    arrNested.add(e3); 

    arrOuter.add(arrNested); 

但在這種情況下,你不能直接調用由arrOuter返回的數據添加方法,因爲返回的數據是Object類的。您必須明確地將其轉換爲列表,然後添加其他數據。

Element e4 = new Element(); 
Element e5 = new Element(); 
((ArrayList) arrOuter.get(2)).add(e4); 
((ArrayList) arrOuter.get(2)).add(e5); 
0

我想你找

List<Object> list1=new ArrayList<Object>(); 
    List<Object> list=new ArrayList<Object>(); 
    list.add("element1"); 
    list.add("element2"); 

    list1.add("element3"); 
    list.add(list1); 

    List<Object> listobj=(List<Object>) list.get(2); 

    listobj.add("element4"); 
    listobj.add("element5"); 
    System.out.println(list); 

要添加元素的父目錄不是你的嵌套列表,以便您必須存儲您的嵌套列表的引用,那麼你可以添加其他元素。

+0

對於列表變量,您可以克隆list1。 – Vinod

+1

我認爲不需要克隆。 –

+0

我有要求。 – Vinod

相關問題