迭代LinkedHashMap是正确的方法吗?

时间:2011-11-16 04:42:25

标签: java struts2 linkedhashmap

我正在尝试迭代LinkedHashMap,但它不是正确的我已附加下面的代码

for (int g = 0; g < list_Fields.size(); g++) {
    System.out.println("Hello ListOFFields:" + list_Fields.get(g));
    row = (LinkedHashMap) list_Fields.get(g);

    Iterator ie = row.keySet().iterator();
    while (ie.hasNext()) {
        String colName = ie.next().toString();
        System.out.println("<TD>" + colName + "</TD>");
    }
}

5 个答案:

答案 0 :(得分:3)

我不确定为什么它变得如此笨拙。以下是我们在Java中迭代集合时通常所做的事情(使用LinkedHashMap,我假设您使用的是Java 5 +)

// assume listField is Collection<Map<String,ANYTHING>> 
for (Map<String,ANYTHING> row : listFields) {
  for (String ie : row.keySet()) {
    System.out.println("<TD>" + ie +"</TD>");
  }
}

答案 1 :(得分:3)

按照您想要的方式修改它 如果你只想要Keys,那么使用keySet()而不是entrySet()

你走了:

    public static  List<LinkedHashMap<Object,Object>> dummy = new ArrayList<LinkedHashMap<Object,Object>>();
public static void display(){
    for(LinkedHashMap<Object,Object> map : dummy){
        for (Map.Entry<Object, Object> entry : map.entrySet()) {
            Object key = entry.getKey();
            Object value = entry.getValue();
                  //Your code
        }
    }
}

答案 2 :(得分:1)

我想它应该是这样的:

for (Entry entry: map.entrySet())
{
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

答案 3 :(得分:0)

如果收集迭代,你可以使用for-each Construct ..
for-each构造允许您使用for循环简明地遍历集合或数组 - 请参阅The for Statement。以下代码使用for-each构造在单独的行上打印出集合的每个元素。

for (Object o : collection)
System.out.println(o);
// which u wants to do with O

答案 4 :(得分:0)

迭代字段列表,迭代内部迭代值集合。最终会得到一个包含每行字段的表格,其中包含混合数量。

如果您想获得一个简单的表 - 更改字段/数据集合的顺序,并切换迭代顺序,您首先迭代行,然后在字段上迭代:

List<Map<String,String>> rows = ...

for ( Map data : rows ) {
    System.out.println("<TR>");
    for ( String fld : list_Fields ) {
        System.out.println("<TD>" + data.get(fld) + "</TD>");
    }
    System.out.println("</TR>");
}