【问题标题】:adding elements to the ArrayList nested inside another Arraylist将元素添加到嵌套在另一个 Arraylist 中的 ArrayList
【发布时间】:2017-10-23 19:20:51
【问题描述】:

我已经嵌套了类似于 Java 中的 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。无论如何,我会感谢你的洞察力。

【问题讨论】:

标签: java arraylist nested


【解决方案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);

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

【讨论】:

  • 对于list变量,可以克隆list1。
  • 我认为不需要克隆。
  • 我有需求。
【解决方案2】:

似乎您正在寻找:

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

假设元素是一个整数

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2017-01-11
      • 2018-08-19
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多