如何使用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);
}
}
}
答案 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();
}
希望这有帮助。