Java 使用ArrayList手动访问ArrayList

Java 使用ArrayList手动访问ArrayList,java,arraylist,adjacency-list,Java,Arraylist,Adjacency List,我正在使用深度优先搜索程序,我正在尝试创建一个邻接列表表示。 我阅读了一些文章,其中指出在ArrayList中创建ArrayList是最好的表示 假设我在arraylist中初始化了arraylist,如下所示: List<List<Integer>> adjList = new ArrayList<List<Integer>>(); List adjList=new ArrayList(); 我的问题是如何手动将数据输入arraylist。在

我正在使用深度优先搜索程序,我正在尝试创建一个邻接列表表示。 我阅读了一些文章,其中指出在ArrayList中创建ArrayList是最好的表示

假设我在arraylist中初始化了arraylist,如下所示:

List<List<Integer>> adjList = new ArrayList<List<Integer>>();
List adjList=new ArrayList();
我的问题是如何手动将数据输入arraylist。在我开始编程之前,我试图通过arraylist来理解arraylist的概念。如果有人能在这个arraylist中插入数据,这样我就能看到正确的设置方法

建议您对我可能需要或需要考虑的任何内容提供额外的意见


顺便说一句:这不是一个家庭作业,只是利用个人时间浏览我的旧课本。

假设你想添加两个列表,一个是1和2,另一个是10和20。一种非常手动的添加方式可以是:

List<List<Integer>> adjList = new ArrayList<List<Integer>>();

adjList.add(new ArrayList<Integer>()); // initialise new ArrayList<Integer>
adjList.get(0).add(1); // add value one by one
adjList.get(0).add(2);

adjList.add(new ArrayList<Integer>());
adjList.get(1).add(10);
adjList.get(1).add(20);
List adjList=new ArrayList();
adjList.add(新建ArrayList());//初始化新的ArrayList
adjList.get(0).add(1);//逐一增值
获取(0),添加(2);
add(newarraylist());
获取(1),添加(10);
得到(1),加上(20);
你也可以这样写:

List<List<Integer>> adjList = new ArrayList<List<Integer>>();

ArrayList<Integer> a1 = new ArrayList<Integer>(); // initialise new ArrayList<Integer>
a1.add(1); // add value one by one
a1.add(2);
adjList.add(a1);

ArrayList<Integer> a2 = new ArrayList<Integer>(); // initialise new ArrayList<Integer>
a2.add(10); // add value one by one
a2.add(20);
adjList.add(a2);
List adjList=new ArrayList();
ArrayList a1=新的ArrayList();//初始化新的ArrayList
a1.加入(1);//逐一增值
a1.加入第(2)款;
添加(a1);
ArrayList a2=新的ArrayList();//初始化新的ArrayList
a2.加入(10);//逐一增值
a2.加入(20);
添加(a2);

adjList可以包含类型为
List
的元素,因此创建一个并使用
add(E element)
函数进行添加,就像添加元素一样:

ArrayList<Integer>aList = new ArrayList<>();
adjList.add(aList);

尝试添加第二个列表并使用
get(1)
获取其索引,并将
Integer
元素添加到索引
1
处的列表中,如上例所示。还有其他已知的函数。请检查页面。

好的,整数对象列表可以这样做:

List<List<Integer>> adjList = new ArrayList<List<Integer>>();
List<Integer> li = new ArrayList<Integer>();

for (int i = 0; i < 10; i++) {
    li.add(i);
}

adjList.add(li);
List adjList=new ArrayList();
List li=new ArrayList();
对于(int i=0;i<10;i++){
li.添加(i);
}
添加(li);
添加到每个子列表,然后添加子列表。

这会有所帮助

public static void main(String[] args){
        //creating a new ArrayList of List of Integers
        ArrayList<List<Integer>> integerListContainer = new ArrayList<List<Integer>>();
        //Creating the first child arraylist of Integers
        ArrayList<Integer> firstChildintegerList = new ArrayList<Integer>();
        //filling the values 1,2,3 in it
        firstChildintegerList.add(1);
        firstChildintegerList.add(2);
        firstChildintegerList.add(3);
        //adding this integer list to the parent list
        integerListContainer.add(firstChildintegerList);
         //Creating the second child arraylist of Integers
        ArrayList<Integer> secondChildintegerList = new ArrayList<Integer>();
        //filling the values 10,20,30 in it
        secondChildintegerList.add(10);
        secondChildintegerList.add(20);
        secondChildintegerList.add(30);
        //adding this integer list to the parent list
        integerListContainer.add(secondChildintegerList);
        System.out.println("Printing the parent list to see what it has: ");
        System.out.println(integerListContainer.toString());
    }
publicstaticvoidmain(字符串[]args){
//创建整数列表的新ArrayList
ArrayList integerListContainer=新的ArrayList();
//创建整数的第一个子arraylist
ArrayList firstChildintegerList=新的ArrayList();
//填充其中的值1,2,3
firstChildintegerList.add(1);
firstChildintegerList.add(2);
firstChildintegerList.add(3);
//将此整数列表添加到父列表
add(firstChildintegerList);
//创建第二个子整数数组列表
ArrayList secondChildintegerList=新的ArrayList();
//将值10,20,30填入其中
第二个儿童整数列表。添加(10);
第二个儿童整数列表。添加(20);
第二个儿童整数列表。添加(30);
//将此整数列表添加到父列表
integerListContainer.add(secondChildintegerList);
System.out.println(“打印父列表以查看其内容:”);
System.out.println(integerListContainer.toString());
}

希望它能清楚地解释发生了什么

,只是为了让您了解另一种表达方式。Google Collections API(Guava-)提供了一个
Multimap
——一种可以用作
Multimap
@StefanWinkler的替代数据结构。谢谢,我不知道这一点。我一定会调查的。
public static void main(String[] args){
        //creating a new ArrayList of List of Integers
        ArrayList<List<Integer>> integerListContainer = new ArrayList<List<Integer>>();
        //Creating the first child arraylist of Integers
        ArrayList<Integer> firstChildintegerList = new ArrayList<Integer>();
        //filling the values 1,2,3 in it
        firstChildintegerList.add(1);
        firstChildintegerList.add(2);
        firstChildintegerList.add(3);
        //adding this integer list to the parent list
        integerListContainer.add(firstChildintegerList);
         //Creating the second child arraylist of Integers
        ArrayList<Integer> secondChildintegerList = new ArrayList<Integer>();
        //filling the values 10,20,30 in it
        secondChildintegerList.add(10);
        secondChildintegerList.add(20);
        secondChildintegerList.add(30);
        //adding this integer list to the parent list
        integerListContainer.add(secondChildintegerList);
        System.out.println("Printing the parent list to see what it has: ");
        System.out.println(integerListContainer.toString());
    }