我正在从数据库中检索数量,这些值需要添加到列表中,然后根据其值从具有特定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)也是未定义的。
答案 0 :(得分:7)
您需要创建列表地图。当您阅读记录时,如果存在密钥(此处为类别),则将当前行添加到列表
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);
}
<强>更新强>
问题是你需要在这里指定泛型类型
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);
}
答案 1 :(得分:2)
您可以使用以类别为键的映射和列表的ArrayList作为值。 ArrayList会在您添加时自动更改大小。 Map使用put(key,value)来添加元素。 ArrayList使用add(element)或add(index,element)。
答案 2 :(得分:2)
我建议你在Map里面使用Map
Map<Integer, Map<Integer, String>> map = new HashMap<Integer, Map<Integer,String>>();
外部地图将根据行和值的地图进行分类。因此,每当您想要根据行查找值时,您都可以轻松完成。
答案 3 :(得分:0)
我们还可以使用数组列表和链接列表以及向量空间。
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<>();
所以请使用它们。
答案 4 :(得分:0)
我声明了一个数据类型为Map的变量,如下所示:
Map params = new HashMap();
在那之后,我可以添加如下对象:
params.put("id", indicatorId);