这是迭代 LinkedHashMap 的正确方法吗?

发布于 2024-12-15 12:22:36 字数 427 浏览 0 评论 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>");
    }
}

I am trying to iterate LinkedHashMap but its not coming in right i have attached the code below

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>");
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

那支青花 2024-12-22 12:22:36

我不知道为什么它做得如此笨拙。这是我们在 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>");
  }
}

I am not sure why it is made so clumsy. Here is what we normally done when iterating collections in Java (as u r using LinkedHashMap, I assume you are using 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>");
  }
}
一杯敬自由 2024-12-22 12:22:36

按照您想要的打印语句的方式修改它
如果你只想要键,那么使用 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
        }
    }
}

Modify it the way you want print statements
If you just want Keys then use keySet() instead of entrySet()

Here you go:

    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
        }
    }
}
老子叫无熙 2024-12-22 12:22:36

我想应该是这样的:

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

I guess it should be like this:

for (Entry entry: map.entrySet())
{
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
忆依然 2024-12-22 12:22:36

您可以迭代字段列表,并在迭代内部迭代值的集合。您最终将得到一个表,其中每个字段的行数与其中的混合数量有关。

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

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>");
}

You iterate over list of fields and inside of the iteration you iterate over collections of values. You will end-up with a table with row-per field with mixed amount of in it.

If you want to get a simple table - change order of you fields/data collections and switch you iteration order that you iterate on rows first and on fields second:

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>");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文