Java 创建邻接列表图
我正试图通过创建edge类型的arraylist数组(包括source、dest、weight),为graph创建邻接列表,如下代码所示:Java 创建邻接列表图,java,arrays,arraylist,data-structures,graph,Java,Arrays,Arraylist,Data Structures,Graph,我正试图通过创建edge类型的arraylist数组(包括source、dest、weight),为graph创建邻接列表,如下代码所示: public class Main { static class Edge{ int s; int d; int wt; Edge(int src,int des,int weight) { this.s = src; this.d = des;
public class Main {
static class Edge{
int s;
int d;
int wt;
Edge(int src,int des,int weight)
{
this.s = src;
this.d = des;
this.wt = weight;
}
}
public static void main(String[] args) throws Exception
{
//creating array of arraylist of type edge
ArrayList<Edge>[] graph = new ArrayList[7];
//Doubt regarding this line ,as why is it essential?
graph[0] = new ArrayList<Edge>();
//creating edge object
Edge e = new Edge(0,1,10);
//adding it into arraylist
graph[0].add(e);
}
公共类主{
静态类边{
int-s;
int d;
int-wt;
边缘(内部src、内部des、内部重量)
{
这个.s=src;
d=des;
该重量=重量;
}
}
公共静态void main(字符串[]args)引发异常
{
//正在创建edge类型的arraylist数组
ArrayList[]图形=新的ArrayList[7];
//对这条线有疑问,因为为什么它是必要的?
图[0]=新的ArrayList();
//创建边对象
边e=新边(0,1,10);
//将其添加到arraylist中
图[0]。添加(e);
}
由于我已经创建了edge类型的arraylist数组,我想我可以直接添加到arraylist中,就像图[0]一样
图形[0]=新的ArrayList();
但是如果没有它,它就不能工作。为什么当我的数组是arraylist时,我需要给出上面的语句,这样我就不能直接添加元素了?这段代码声明
graph
是一个由7个arraylist
组成的数组,它的元素最初(与所有数组一样)将对象设置为默认值-null
,整数设置为0
,布尔设置为false
:
ArrayList<Edge>[] graph = new ArrayList[7];
您的新ArrayList[7]
仅为(ArrayList
)的数组保留空间对象,但没有为要添加的7个新的ArrayList
保留空间。例如,这允许您将ArrayList
的子类添加到数组中,或保留一些具有null
值的插槽,或将相同的ArrayList
添加到多个插槽中。所有这些选项在某些情况下都很有用,因此mpiler和language不会创建空新元素,除非您显式地使用它们来创建空新元素。我建议使用循环:
ArrayList<Edge>[] graph = new ArrayList<>[7];
for (int i=0; i<graph.length; i++) {
graph[i] = new ArrayList<Edge>();
}
ArrayList[]图形=新的ArrayList[7];
因为(int i=0;我可以回答你的问题吗?@Sweeper非常感谢你。是的,它回答了我的问题。
ArrayList<Edge>[] graph = new ArrayList<>[7];
for (int i=0; i<graph.length; i++) {
graph[i] = new ArrayList<Edge>();
}