簡體   English   中英

將元素存儲到ArrayList中卻得到了冗余?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM