如果我有索引,从地图获取键或值

时间:2014-10-08 08:39:11

标签: java jsp map multidimensional-array

我有一个包含DVD列表的JSP,并希望将所选(复选框)列表发送到第二页进行处理。在我使用的第二页中:

String selected[] = request.getParameterValues("checkboxGroup");

获取所选复选框的列表。我想获得所选索引的关键OR值(bse我正在构建一个表)。例如;如果用户选择了第一个复选框, - >我希望能够访问Pirates或299。

我将2d数组转换为地图,如下所示,如果我能够获取地图的索引,我将能够访问键或值,如下所示:

String [ ][ ] myArray = { 
                          {"Pirates", "299"},
                          {"Travellers", "145"},
                          {"Zoopy", "89"},
                          {"Farewell", "67"},
                          {"Junies", "98"},
                          {"WakUp", "55"},
                          {"Space", "100"},
                          {"Solar", "199"},
                          {"Strom", "200"},
                          {"Wind", "200"}
                        }; 

final Map<String, String> map = new HashMap<String, String>(myArray.length);
for (String[] mapping : myArray) {
  map.put(mapping[0], mapping[1]);
}

但我感到困惑,不知道从哪里开始,并希望得到更有经验的人的建议。

3 个答案:

答案 0 :(得分:1)

地图没有索引,所以你不得不放弃这个想法。

您需要使用索引数据结构,例如List或数组。也许包含字符串和整数值的List个自定义对象是合适的吗?

答案 1 :(得分:0)

地图的Key- / Value- / Entry-Sets(正如您所注意到的)集合,即无序列表。所以你实际上可以将它们解析为带有索引的列表,但是文件索引不一致。

答案 2 :(得分:0)

最后......这就是我用过的东西;

TreeMap dvdstree = new TreeMap();

// Add some dvds.
dvdstree.put("Pirates", 5);dvdstree.put("Solar",124);
dvdstree.put("Travellers",145);dvdstree.put("Zoopy", 89);
dvdstree.put("Farewell", 67);


//Get a set of the entries
Set set = dvdstree.entrySet();
// Get an iterator
Iterator iterator = set.iterator();

//Used a count keep track of iteration -> compare with name of checkbox
int count = 0;

//Printing into html table
out.print("<table>");

//Gets the selected checkboxes from previous page
String selected[] = request.getParameterValues("checkboxGroup");   

while(iterator.hasNext()) {
Map.Entry me = (Map.Entry)iterator.next();
//used a count to keep a track of where I am in the List   
count++;

  for(int i=0; i<selected.length; i++){
    if(count == Integer.parseInt(selected[i])){
     out.print("<tr><td>"+ me.getKey()+ "<td>"+me.getValue()+"<td/></tr>");
     //Used this to get value of checkbox so that I could perform arithmetic in my class
     String value= (me.getValue()).toString();
     double valueDouble = Double.parseDouble(value);
     myBean.addPrice(test2);
    }
  }
}

out.print("<tr><td>Total</td><td>"+myBean.getTotal()+"</td>");
out.print("</table>");