java - 比较两个 vector

标签 java vector compare

我有两个 vector ,如下所示;

private Vector<Vector<Object>> vector1 = new Vector<Vector<Object>>();
private Vector<Vector<Object>> vector2 = new Vector<Vector<Object>>();

一些方法填充上面的 vector 并创建 vector 是;

vector 1

[1000, 0, 100100, 1]
[1000, 1, 100100, 1]
[1000, 2, 100100, 1]
[1000, 3, 100100, 1]

vector 2

[1000, 0, ppp, yyy]
[1000, 1, zzz, xxx]

如您所见, vector 2 减去两行。 Vector 的第 0 列和第 1 列对我来说很重要。我在sql查询中使用它们。当行不在 vector 2 中时,我需要从数据库中删除 vector 1 相关的列。

我的代码是:

for(int i =0; i != vector1.size(); i++){
        if (i>vector2.size()){
            System.out.println("detected");
            try{
             ResultSet rs;
             Statement stmt;
             ResultSetMetaData rsmtd;
             String query = "USE DBST\n" +
             "delete from Mtable where   Me='"+vector1.elementAt(i).elementAt(0).toString()+"' and P='"+vector1.elementAt(i).elementAt(1).toString()+"'";
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             String connectionUrl = "jdbc:sqlserver://192.168.130.100;" + "databaseName=DBST;" + "user=" + "user1" + ";" + "password=" + "user1pass" + ";"; 
             Connection con = DriverManager.getConnection(connectionUrl);
             stmt = con.createStatement();
             rs = stmt.executeQuery(query);
            }
            catch(SQLException se){
            se.printStackTrace();
            }
            catch(Exception e){
            e.printStackTrace();
            }
        }
        else{
           System.out.println(vector1.elementAt(i).elementAt(0).toString()+vector1.elementAt(i).elementAt(1).toString());
        }

    }

当我运行这段代码时,什么也没发生。剩余行( vector 1 的第 2 行和第 3 行)未从数据库中删除。总是出现 else 语句并打印当前 vector 1 行所需的格式。

我该如何处理这个问题?

谢谢

最佳答案

就比较而言,您可以执行以下操作来比较每个 vector 中的第一个和第二个条目,然后丢弃从数据库中找不到的 vector 。

List<ArrayList<Integer>> vector1 = new ArrayList<ArrayList<Integer>>();
List<ArrayList<Integer>> vector2 = new ArrayList<ArrayList<Integer>>();

ArrayList<Integer> tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(0);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(1);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1002);
tmp.add(2);
tmp.add(100100);
tmp.add(1);
vector1.add(tmp);

tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(0);
tmp.add(100102);
tmp.add(2);
vector2.add(tmp);
tmp = new ArrayList<Integer>();
tmp.add(1000);
tmp.add(1);
tmp.add(100100);
tmp.add(1);
vector2.add(tmp);

System.out.println(vector1);
System.out.println(vector2);

Integer[] vec3 = new Integer[2];
Integer[] vec4 = new Integer[2];
boolean flag = false;

for (ArrayList<Integer> vec1Tmp : vector1) {
    flag = false;
    vec3[0] = vec1Tmp.get(0);
    vec3[1] = vec1Tmp.get(1);

    for (ArrayList<Integer> vec2Tmp : vector2) {
        vec4[0] = vec2Tmp.get(0);
        vec4[1] = vec2Tmp.get(1);

        if ( Arrays.equals(vec3, vec4) ) {
            flag = true;
            break;
        }

    }

    if ( !flag ) {
        // do your deletion here
        System.out.println(vec1Tmp);
    }
}

关于java - 比较两个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304075/

相关文章:

java - 比较顺序是否存在差异?

python - 如何判断一个日期是否在另外两个日期之间?

java - 我可以将 javafx/openjfx 与 OpenJDK 8 一起使用吗?

java - 无法将 JTextField 设置为 int

java - 嵌入 hsql 的一些有趣的事情

c++ - 使用元素对 vector 进行排序

c++ - 是否有适合度假的标准容器?

matlab - 如何在不排序的情况下找到向量中 2 个最小元素的索引?

ios - 如何检查具有多个值的枚举类型参数是否具有特定的枚举类型

java - jnlp href 属性中的 url 参数