如何使用ListIterator打印arraylist中节点的数据字段

时间:2015-12-28 07:02:50

标签: java arraylist

如何使用Arraylist的listIterator打印arraylist中节点的元素?

    import java.util.ArrayList;
    import java.util.ListIterator;

    public class ArrayNodeDemo {
    public static void main(String args[]) {

    ArrayList<Object> lstObject = new ArrayList<Object>();

    Person p1 = new Person();
    p1.setPersonId(1);
    p1.setPersonName("Tom");
    lstObject.add(p1);

    Person p2 = new Person();
    p2.setPersonId(2);
    p2.setPersonName("Jerry");
    lstObject.add(p2);

显示节点位置。我们如何显示节点的元素?

    Iterator it = lstObject.listIterator();       
    while(it.hasNext()) {                         
    Object obj = it.next();
    System.out.println(obj);
       }
     }
   } 

5 个答案:

答案 0 :(得分:2)

您需要在Person类中覆盖toString方法,如:

public String toString() {
   ...return string representation of person from here
}

答案 1 :(得分:1)

您需要将obj转换为Person

Person obj = (Person) it.next();
System.out.println(obj.getPersonId());

答案 2 :(得分:0)

您需要在Person类中使用override the toString method;

class Person{
    ...
    @Override
    public String toString() {
        // Or any other suitable format
        return "ID:" + this.getPersonId() + " | Name:" + this.getPersonName();
    }
    ...
}

因为println内部使用print,其实现方式如下:

public void print(Object obj) {
    write(String.valueOf(obj));
}

String.valueOf()的实施方式如下:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();  // this is where toString() is called over object
}

答案 3 :(得分:0)

将next()方法的返回对象强制转换为person对象或直接接收它作为person类的对象,如

/%postname%/

然后覆盖person类的toString方法

Person obj = it.next();

使用println语句直接打印它,或者创建一个公共方法来打印所需的详细信息。

答案 4 :(得分:0)

当你编写System.out.println(obj)时,它调用Object类中定义的toString()的实现。 这是Object类的toString()方法的实现 -

public String toString() {
   return getClass().getName() + "@" + Integer.toHexString(hashCode());}

因此,您需要在Person类中编写自己的toString方法实现。例如 -

@Override 
public String toString(){
    return getPersonName();
}

希望这有帮助。