我有两个 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/