我正在尝试形成并迭代一个地图,其中包含重复键和arraylist作为值。我试过跟随,但它没有像我预期的那样工作。假设
value1="Ramu"
value2="1";
value3="2";
value1="Ramu"
value2="3";
value3="4";
value1="John"
value2="1"
value3="2"
当我迭代地图时,我应该获得关键Ramu的1,2,3,4和关键John的1,2 这是我的一段代码
SQL="select value1,value2,value from student where student="Ramu"";
Bean bean;
ArrayList<Bean> beanList = new ArrayList<Bean>();
Map<String,ArrayList<Bean>> holder=new HashMap<String,ArrayList<Bean>>();
pst = null;
rs = null;
try {
pst = conn.createStatement();
rs = pst.executeQuery(SQL);
while (rs.next()) {
String value1=rs.getString("value1");
bean = new Bean();
bean.setvalue2(rs.getString("value2"));
bean.setvalue3(rs.getString("value3"));
beanList.add(bean);
holder.put(value1, beanList);
}
答案 0 :(得分:1)
您始终使用相同的beanList
。每当在地图中插入新条目时,都需要创建一个新列表。
String value1=rs.getString("value1");
bean = new Bean();
bean.setvalue2(rs.getString("value2"));
bean.setvalue3(rs.getString("value3"));
beanList = holder.containsKey(value1) ? holder.get(value1) : new ArrayList<Bean>();
beanList.add(bean);
holder.put(value1, beanList);
应该这样做。
答案 1 :(得分:0)
嗯,地图的目的是你有一个唯一键,它指向一个值。密钥不能重复,它没有任何意义,插入一个已经存在于地图中的密钥的值只会重写前一个值。
所以在你的情况下,你的钥匙应该是&#34; Ramu&#34;和&#34;约翰&#34;然后你会有映射: