Java ArrayList新元素未创建

时间:2015-03-12 02:56:55

标签: java arraylist

我正在尝试使用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,感谢所有帮助过的人。

2 个答案:

答案 0 :(得分:1)

据推测,ifVertexExists的响应始终是&gt; 0.使用调试器或插入print语句来验证这一点。

答案 1 :(得分:-1)

我认为您的顶点类需要实现equals以与ArrayList.contains中使用的ifVertexExists一起使用。