2015-12-28 3 views
1

Как использовать listIterator 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); 
     } 
    } 
    } 
+0

Вы должны наложить obj на Person –

+0

Что-то вроде 'System.out.println (obj.getPersonName())'? и т. д. – Atri

+0

Вы можете закрыть это, выбрав соответствующий ответ? –

ответ

2

Вам необходимо переопределить метод ToString в классе Person, как:

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

Вы должны бросить ваш obj в Person класс

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

Этот работает .. он хорошо работает с ListIterator..tnx –

0

Вам нужно будет override the toString method в Person класса, как ;

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 
} 
0

отливать обратный объект следующего метода() к объекту лицо или непосредственно получить его как объект класса человека, такой как

Person obj = it.next(); 

Тогда либо переопределить метод ToString класса лиц

Person { 
.. 
    public String toString() { 
      .. 
      .. 
    }  
} 

печатать непосредственно с помощью Println заявления или создать публичный метод, чтобы напечатать данные, которые вы хотите.

0

Когда вы пишете System.out.println (obj), он вызывает реализацию toString(), определенную в классе Object. Вот реализация ToString() метод класса Object -

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

Таким образом, вы должны написать свою собственную реализацию метода ToString в классе Person. Например, -

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

Надеюсь, это поможет.

Смежные вопросы