java - 如何在java中迭代列表中的列表?

标签 java list arraylist iterator

您好,我有两个值对象类。

package org.array;

import java.util.List;



public class Father {

    private String name;
    private int age ;
    private List<Children> Childrens;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public List<Children> getChildrens() {
        return Childrens;
    }
    public void setChildrens(List<Children> childrens) {
        Childrens = childrens;
    }


}

第二个是给 child 的

package org.array;

public class Children {

    private String name;
    private int age ;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }


}

并且我想打印那里的值 我在列表中嵌套了一个列表,在这里我只在对象中放置了一个值,而实际上我有很多值。所以我在父亲名单中嵌套了 child 名单。我怎样才能打印或获得 child 和父亲的值(value)。这是我的逻辑。

package org.array;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ArrayDemo {

    public static void main(String[] args) {
         List <Father> fatherList = new ArrayList<Father>();
        Father father =  new Father();
        father.setName("john");
        father.setAge(25);
        fatherList.add(father);

         List <Children> childrens = new ArrayList<Children>();
         Children children = new Children();
        children.setName("david");
        children.setAge(2);
        childrens.add(children);
        father.setChildrens(childrens);
        fatherList.add(father);

        Iterator<Father> iterator = fatherList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.toString());
        }



        }
        }

最佳答案

您可以使用嵌套的 for循环来完成这个。这是一个例子:

for (Father f : fatherlist) {
    System.out.println("Father: " + f.getName());
    System.out.println("Children:");
    for (Children c : f.getChildrens()) {
        System.out.println(c.getName());
    }
}

使用 Iterator方法,您将以这种方式完成它:

Iterator<Father> i = fatherList.iterator();
while (i.hasNext()) {
    Father f = i.next();
    System.out.println("Father: " + f.getName());
    System.out.println("Children:");
    Iterator<Children> ci = f.getChildrens().iterator();
    while (ci.hasNext()) {
        Children c = ci.next();
        System.out.println(c.getName());
    }
}

作为一般样式建议,我建议重命名 Children类别为 Child并重命名方法 getChildrenssetChildrensFathergetChildrensetChildren分别。

我什至建议更进一步,删除 setChildren方法并提供 addChild(Child child)这样您就可以控制 List 的方法包含 child 的。这样做的好处是您可以保证 List被实例化,这样您定义的这些循环就不会遇到 NullPointerException在没有 child 被添加到特定的情况下 Father实例。

关于java - 如何在java中迭代列表中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439409/

相关文章:

java - 使用 AMD 处理器开发 .net 软件

python - 如何找到列表中第二个元素的最小值

java - 列出指定类的所有常量

python - 如何在 python 中将列表中的元素移动到末尾

java - 使用变量参数在没有 ArrayList 的情况下查找数字的乘积?

java - 我怎样才能让我的删除按钮真正删除名称和它旁边的复选框?

java - 即使检查是否为空,.iterator() 也会产生空指针异常

java - 编写一个 Find 程序,搜索命令行中指定的所有文件并打印出包含指定单词的所有行

java - WSO2 Identity Server 支持 Java 5(JDK 1.5)吗?

java - 二次方程,无法找出语法错误