Это правильный путь для перебора LinkedHashMap? - PullRequest
0 голосов
/ 16 ноября 2011

Я пытаюсь перебрать 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 ]

3 голосов
/ 16 ноября 2011

Измените его так, как вы хотите печатать выписки Если вам просто нужны ключи, используйте 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
        }
    }
}
3 голосов
/ 16 ноября 2011

Я не уверен, почему это сделано так неуклюже. Вот что мы обычно делаем при итерации коллекций в 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 голос
/ 16 ноября 2011

Я думаю, это должно быть так:

for (Entry entry: map.entrySet())
{
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
0 голосов
/ 16 ноября 2011

Вы перебираете список полей, а внутри перебора вы перебираете коллекции значений.В итоге вы получите таблицу со строкой на поле со смешанным количеством в ней.

Если вы хотите получить простую таблицу - измените порядок ваших полей / коллекций данных и переключите свой порядок итерации, который вы выполняете сначала для строк, а для вторых:

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>");
}
0 голосов
/ 16 ноября 2011

в случае сбора для итерации вы можете использовать for-each Construct ..
Конструкция for-each позволяет вам кратко обойти коллекцию или массив с помощью цикла for - см. Оператор for. Следующий код использует конструкцию for-each для вывода каждого элемента коллекции на отдельной строке.

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