[英]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.