![](/img/trans.png)
[英]How to add multiple objects of class for same key value in HashMap in java?
[英]how to add objects of class to hashMap based on their values?
我正在從數據庫中檢索數量的值,需要將其添加到列表中,然后根據其值從具有特定Key的MAP中檢索,例如,
row 1 name = "A" category = "1"
row 2 name = "B" category = "2"
row 3 name = "C" category = "1"
row 4 name = "D" category = "3"
我需要將row1和row3放在一個列表中,將row2和row4中的每一個放在一個單獨的列表中,然后將這三個列表放入MAP中,並使用類別名稱(1,2,3)作為MAP的鍵。
MAP
1 LIST1 (values of 2 rows)
2 LIST2 (values of 1 row)
3 LIST3 (values of 1 row)
我不知道如何將它們添加到列表和MAP。 我的約束是,每次檢索值時都不會檢索相同的行,因此每次我可能需要不同數量的列表來保存已檢索的每個類別的值。
我的代碼如下,
ResultSet rs = st.executeQuery(SelectRows);
Map map = new HashMap();
if(rs.next())
{
item.setRowID(rs.getString("ID"));
item.setName(rs.getString("Name"));
item.setValue(rs.getString("Value"));
item.setCat(rs.getString("Cat"));
if(!map.containsKey(rs.getString("Cat"))){
map.put(rs.getString("CatID"), new ArrayList());
}
map.get(rs.getString("CatID")).add(row);
}
最后一行遇到此錯誤>“”對象類型未定義方法add(Rows)。 即使我將對象添加到列表中我遇到相同的錯誤,對於類型Object,方法add(List)是未定義的。
您需要創建列表地圖。 當您讀取記錄時,如果存在密鑰(此處為類別),則將當前行添加到列表中
Map map = new HashMap()
for( Row row : resultset ) {
if(!map.containsKey(row.category)){
map.put(row.category, new ArrayList());
}
map.get(row.category).add(row.name);
}
UPDATE
問題是你需要在這里指定泛型類型
Map<String, List<Rows>> map = new HashMap<String, List<Rows>>()
while( rs.next() ) {
Rows row = new Rows();
/*
* code to initialize the values of row from the record
*/
String category = rs.getString("Cat");
if(!map.containsKey(category)){
map.put(category, new ArrayList<Rows>());
}
map.get(category).add(row);
}
我建議你在Map里面使用Map
Map<Integer, Map<Integer, String>> map = new HashMap<Integer, Map<Integer,String>>();
外部地圖將根據行和值的地圖進行分類。 因此,每當您想要根據行查找值時,您都可以輕松完成。
我們還可以使用數組列表和鏈接列表以及向量空間。
Map<Integer, ArrayList<class-name(means object)>> map = new HashMap<>();
Map<Integer, Vector<class-name(means object)>> map = new HashMap<>();
Map<Integer, LinkList<class-name(means object)>> map = new HashMap<>();
所以使用它們之一。
我聲明了一個數據類型為Map的變量,如下所示:
Map params = new HashMap();
之后,我可以添加一個對象如下:
params.put("id", indicatorId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.