我正在尝试使用Database中的元素创建ArrayList。我可以毫无问题地从数据库中获取数据,但是当我尝试创建对象的ArrayList时,我的问题就出现了。它只是不存在。我在我的主要课堂上宣布了我的名单:
private static ArrayList<Vertex> vertexList = new ArrayList<Vertex>();
在我的getData()
函数中显示
private static void getData() throws SQLException{
result = query.executeQuery("SELECT * FROM GTABLE ORDER BY X,Y");
while (result.next()){
int x = result.getInt("X");
int y = result.getInt("Y");
float p = result.getFloat("P");
System.out.printf("X:%d\tY:%d\tP:%.3f\n",x,y,p);
addData(x,y,p);
addData(y,x,p);
}
}
我从数据库中获取所有数据。一切正常,直到我进入下面显示的函数addData(x,y,p)
:
private static void addData(int x, int y, float p){
Edge edge;
int tmp;
Vertex vertex = new Vertex(x);
edge = new Edge(x,y,p);
//vertex.edgeList.add(edge);
tmp = ifVertexExists(vertex);
if(tmp < 0){
vertexList.add(vertex);
} else {
//vertexList.get(tmp).edgeList.add(edge);
}
}
它只是在我的列表中没有创建任何内容。我已经用isEmpty()
检查了它,它是空的。
任何帮助将不胜感激。
编辑以下是我的Vertex
课程:
class Vertex{
private final int vertID;
public Vertex(int x){
this.vertID = x;
}
public int getVertID(){
return vertID;
}}
ifVertexExists
private static int ifVertexExists(Vertex vL){
for(Vertex v : vertexList){
if(v.getVertID() == vL.getVertID()){
System.out.printf("Vertex is on the list\n");
return -1;
} else {
System.out.println("No vertex with this ID\n");
}
}
return 0;
}
现在,我可以创建列表并且效果很好,顶点显示在屏幕上,tmp
为-1。这很糟糕ifVertexExists
,感谢所有帮助过的人。
答案 0 :(得分:1)
据推测,ifVertexExists的响应始终是&gt; 0.使用调试器或插入print语句来验证这一点。
答案 1 :(得分:-1)
我认为您的顶点类需要实现equals
以与ArrayList.contains
中使用的ifVertexExists
一起使用。