我从request.getParameterMap()
获得了一些参数,我想迭代Map并从Map中的每一行获取第n个值。以下是数据的示例
地图包含:
recordNo:1,2,3,4,5,6
dob:19800101,19800201,'',19930101,19940101,19950302
addressLn1: well street, prince street,lewis street,edward street,mills street, #3 rich street
我所拥有的是一个包含此数据的Map我想循环遍历数据并从Map数组中获取第n条记录。这就是我想要的
第一次迭代打印: 1,19800101,井街
第二次迭代打印: 2,19800201,王子街
代码:
Map map = request.getParameterMap();
for(int i = 0; i< map.size();i++){
//how can i access the values with the array at the nth position
System.out.println("Value at " +i+ " " +map.get(i).toString());
}
答案 0 :(得分:1)
您的数据结构在概念上是不正确的,因此也是您的所有问题。
您应该将数据保存在Java Bean中:
public class MyBean {
private String recordNo; // is it an int?
private String dob; // is it a Date?
private String addressLn1;
// getters/setters omitted
}
然后以某种方式将其添加到List<MyBean>
并迭代它:
List<MyBean> list = new ArrayList<MyBean>();
// list gets populated in some way, then
for(MyBean bean : list) {
bean.getDob();
...
}
因此,您似乎正在处理HTTP请求并从中获取参数映射。在这种情况下你不能仅仅依赖于该地图上的参数顺序 - recordNo
数组的顺序可能(并且很可能会)与{{1}的顺序不同数组。
在您的情况下,您需要做的是以HTML唯一名称输入您的输入,例如dob
,recordNo0
,recordNo1
,dob0
- 这样您就可以保证bod对应正确的记录No:
dob1
然后你需要遍历servlet中的参数或者你需要构建<c:forEach varStatus="status" items="${yourCollection}">
<input type='text' name='recordNo${status.index}' value='some value'>
<input type='text' name='dob${status.index}' value='some value'>
</c:forEach>
并在数组中收集它们的任何内容:
MyBean