0

我正在尝试迭代 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>");
    }
}
4

5 回答 5

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>");
  }
}
于 2011-11-16T04:48:30.527 回答
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
        }
    }
}
于 2011-11-16T05:06:32.297 回答
1

我想应该是这样的:

for (Entry entry: map.entrySet())
{
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
于 2011-11-16T05:07:44.697 回答
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>");
}
于 2011-11-16T05:57:14.423 回答
0

在集合进行迭代的情况下,您可以使用for-each Construct..
for-each 构造允许您使用 for 循环简洁地遍历集合或数组 - 请参阅 for 语句。以下代码使用 for-each 构造在单独的行上打印出集合的每个元素。

for (Object o : collection)
System.out.println(o);
// which u wants to do with O
于 2011-11-16T04:55:33.400 回答