2017-05-23 4 views
1

内にネストArrayListに要素を追加:私はArrayListにはそのようになりますので、要素を追加したいと思います私はJavaでいるように見えるのArrayListにネストされている別のArrayList

myArrayList = [element1, element2, [element3]] 

を:

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に変換してうそかもしれないことに気づきましたstringとしてfinalArrayに追加します。とにかく、私はあなたの洞察に感謝します。

+4

「ArrayList」の正確な宣言を表示してください。あなたが 'ArrayList 'または生の型のどちらかを使用している疑いがあります... – Turing85

+0

[Javaでのリストのリスト]の可能な複製(https://stackoverflow.com/questions/1474954/working-with- a-list-in-java-in-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); 

、要素が共有擬似コードを1として整数

0

で、あなたのメインといくつかの問題があります配列宣言。

ArrayListには、1つのタイプのデータしか含めることができません。あなたが保存するためのオブジェクトを使用することができます 同じ構造内の値の両方のタイプを保存したい場合は

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

ArrayList<Element> arr = new 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); 

しかし、データが返されるので、この場合には、あなたは直接Objectクラスのものであり、arrOuterによって返されたデータにメソッドを追加呼び出すことはできません。明示的にそれをリストにキャストし、別のデータを追加する必要があります。

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

list変数の場合、list1を複製できます。 – Vinod

+1

クローニングは必要ないと思います。 –

+0

私は要件を持っています。 – Vinod

関連する問題