有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

添加和检索元素的ArrayList的java ArrayList

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

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. 如何在不循环的情况下一次添加子列表

以下是我尝试将子列表添加到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);
    }
}

共 (3) 个答案

  1. # 1 楼答案

    我有一个解决办法

    class Main {
    
        public static void main(String[] args) {
    
            ArrayList < ArrayList < Integer >> mainList = new ArrayList < ArrayList < Integer >> ();
    
            ArrayList < Integer > subList = new ArrayList < Integer > ();
    
            for (int i = 0; i < 10; i++) {
    
                subList = new ArrayList < Integer > ();
    
                for (int j = i + 1; j < 10; j++) {
                    subList.add(element[j])
                }
                mainList.add(subList);
            }
    
        }
    }
    
  2. # 2 楼答案

    所以,你有一个数组列表,一个数组列表,一个整数。mailList是子列表的数组列表。子列表是整数的数组列表。所以,要得到一个元素,你必须得到一个get。我给你看看

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

    这段代码也会做同样的事情

    总之,从数组列表的数组列表中得到数组列表,然后从数组列表中得到整数,从数组列表的数组列表中得到整数。希望这有帮助!:)

    (是的,我知道数组列表有点混乱,但这是我唯一能想到的解释方法)

  3. # 3 楼答案

    你的代码

    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
    

    我的解释在代码注释中