将元素添加到嵌套在另一个Arraylist中的ArrayList

时间:2017-05-23 17:38:50

标签: java arraylist nested

我嵌套的ArrayList在Java中看起来像那样:

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。无论如何,我将非常感谢您的见解。

3 个答案:

答案 0 :(得分:1)

好像你正在寻找:

connect

或者

use students

假设,element是一个整数

答案 1 :(得分:1)

我认为你在寻找

    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);

您要将元素添加到父列表而不是嵌套列表,您必须存储嵌套列表的引用,然后才能添加其他元素。

答案 2 :(得分:0)

根据共享的伪代码,主数组声明存在一些问题。

ArrayList中只能包含一种类型的数据。因此,您的数组声明可以是:

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

或将List存储在其中:

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

如果您希望将两种类型的值存储在同一结构中 您可以使用Object存储任何类型的值,因为它是所有类的根。 在这种情况下,您的声明将类似于:

     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返回的数据的add方法,因为返回的数据是Object类。您必须将其显式地转换为列表,然后添加其他数据。

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