[英]Storing elements into an ArrayList but getting redundancies?
我编辑了一个问题:我试图将数据库的所有表的外键存储在arraylist Fkeys中。 我有方法getFK检索现有表的外键(如果存在)
public ArrayList Fkeys = new ArrayList();
public ArrayList Vec = new ArrayList();
public ArrayList getFK () {
try {
/* Database connection */
DBConnection connect = new DBConnection();
connect.DBConnect();
Connection con = connect.con;
/* Getting some infos regarding keys*/
DatabaseMetaData metadata = con.getMetaData();
ResultSet clefs = metadata.getImportedKeys(null, null, "persons");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
clefs = metadata.getImportedKeys(null, null, "departments");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
}
现在,当我执行此操作时,将得到以下结果:[[],[]],因为两个表的人员和部门没有外键。 但是当我将这些行添加到有关具有3个外键的表格学生的方法中时
clefs = metadata.getImportedKeys(null, null, "students");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
我得到这个结果:[[id,person,depp],[id,person,depp],[id,person,depp]]应该是:[[id,person,depp],[],[ ]]我在做什么错? 为什么Vec的内容存储在Fkeys的所有位置?
这个循环似乎每次都会在alist
添加相同的内容...
while(keys.next()) {
alist.add(clefs.getString("FKCOLUMN_NAME"));
}
我不能确定这是问题所在('cos,您不告诉我们clefs
是什么!)...但是对我来说,它似乎可疑。
检出Sets ,它们就像Lists一样,但是它们具有在对象内部唯一的能力。 即如果您有:
Set<Integer> intSet = new HashSet<Integer>()
intSet.add(1);
intSet.add(1);
for (Integer i : intSet) {
System.out.println(i);
}
最终输出应为:
1
集合不允许同一集合中有多个相同的对象。
另外,在声明ArrayList时,一定要注意每个ArrayList的类型,否则您的IDE应该会大吼大叫,但我认为它默认为Object。 如果在Set / List中需要3个字段并像这样进行声明,则我建议使用一个自定义模型对象List<CustomModelObject> listOfObjects = new ArrayList<CustomModelObject>();
(如果需要Set的示例,请参见上面的示例)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.