ArrayLists的ArrayList添加和检索元素

时间:2017-03-02 21:43:35

标签: java arraylist

我有一个Integer ArrayList(mainList),里面会有Integer Arrays(subList),我试图将整数数组元素添加到mainList并在以后显示它们。将子列添加到mainList并显示subList中的所有元素。

2 subLists = {1,2,4},{3,2,1}
mainList =[{1,2,4},{3,2,1}]
Display : 1,2,4,3,2,1
  1. 如何从mainList轻松检索元素
  2. 如何在不循环的情况下一次添加子列表
  3. 以下是我尝试将子列表添加到mainList

    的方式
    //Adding elements
     ArrayList<ArrayList<Integer>> mainList = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> subList = new ArrayList<Integer>();
    for(int i=0;i<10;i++) {
        for(int j=i+1;j<10;j++){
            //Do something and add elements to subList
            subList.add(element[j]) }
            mainList.add(subList);
    
            // When I clear subList mainList is also getting cleared. I want to add the elements of subList to mainList. I was able to do it with loops but how to do this way
            subList.clear();
        }
    
        //Printing, How do I get the elements from mainList which will have subLists
        for(Integer i:mainList){ 
            System.out.println(i);
        }
    }
    

2 个答案:

答案 0 :(得分:1)

因此,您有一个数组列表的整数列表。 mailList是subList的数组列表。 subList是整数的数组列表。所以,要获得一个元素,你必须得到一个。我会告诉你。

ArrayList temp = mailList.get(i);
temp.get(j);

因此,使用高级for循环,您可以执行此操作来访问每个元素。

for(ArrayList i:mailList)
    for(Integer j:i)
        System.out.print(j);

该代码将打印2D数组列表中的所有整数。我现在用正常的for循环编码它。

for(int i = 0; i < mailList.length; i++){
    ArrayList subList = mailList.get(i);
    for(int j = 0; j < subList.length; j++){
        System.out.print(subList.get(j));
    }
}

该代码可以完全相同。

因此,总结一下,您从数组列表的数组列表中获取数组列表,然后从数组列表中获取数组列表中的整数。希望这可以帮助! :)

(是的,我知道array-list-ception有点令人困惑,但这是我能想到解释的唯一方式)

答案 1 :(得分:1)

您的代码

ArrayList<Integer><ArrayList<Integer>> mainList = new ArrayList<ArrayList<Integer>>(); 

无法编译,请参阅以下代码中的编辑:

import com.sun.deploy.util.StringUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        ArrayList<ArrayList<Integer>> mainList = new ArrayList<ArrayList<Integer>>();

        Integer[] sub1 = {1,2,4};
        Integer[] sub2 = {3,2,1};
        ArrayList<Integer> subList1 = new ArrayList<>(Arrays.asList(sub1));
        ArrayList<Integer> subList2 = new ArrayList<>(Arrays.asList(sub2));

        mainList.add(subList1);
        mainList.add(subList2); //[[1, 2, 4], [3, 2, 1]]


        ArrayList<Integer> intValues = new ArrayList<>();
        for(ArrayList<Integer> inner: mainList){
            intValues.addAll(inner); // add inner list elements to Integer list
        }

        List<String> strings =  intValues.stream().map(Object::toString)
                .collect(Collectors.toList());  // converts to string list

        System.out.println(StringUtils.join(strings, ","));  // prints comma separated string
    }
}

输出:

1,2,4,3,2,1

我的解释在代码注释中。