2015-04-24 3 views
1

Я пытаюсь извлечь данные, используя List, но используя итератор. Он показывает мне объект. Как я могу извлечь данные из него?Извлечь данные из списка с помощью итератора

import java.util.*; 
    class Getter_Setter 
    { 
     int id; 
     String name; 
     public List<Getter_Setter> buckets; 
     public String getName() 
     { 
      return name; 
     } 
     public int getId() 
     { 
      return id; 
     } 
     public void setId(int id) 
     { 
      this.id=id; 
     } 
     public void setName(String name) 
     { 
      this.name=name; 
     } 
     public void setGetter_Setter(List<Getter_Setter> buck) 
     { 
      this.buckets=buck; 
     } 
    } 
    class Simple 
    { 
     public static void main(String arg[]) 
     { 
      run(); 
     } 
     public static void run() 
     { 

      List<Getter_Setter> getList=sum(); 
      Iterator itr=getList.iterator(); 
      while(itr.hasNext()) 
      { 
       System.out.println(itr.next()); 
      } 
     } 
     public static List<Getter_Setter> sum() 
     { 
      List<Getter_Setter> list=new ArrayList<Getter_Setter>(); 
      Getter_Setter get=new Getter_Setter(); 
      get.setId(30); 
      get.setName("Hanish"); 

      System.out.println(get.getId()); 
      System.out.println(get.getName()); 
      list.add(get); 
      return list; 
     } 
    } 
+0

'Getter_Setter getterSetter = (Getter_Setter) itr.next()', то вы можете ссылаться на getterSetter к ccess свои данные – Renatols

+1

Переопределить 'toString()' в 'Getter_Setter'. – GriffeyDog

+0

Вы также можете переопределить 'Getter_Setter # toString' – Renatols

ответ

0

Поскольку вы не Переопределена любой toString() метод это дает вам объект хэш-код вам необходимо изменить это (конечный фрагмент кода), чтобы напечатать то, что вы хотите напечатать из этого класса иначе

реализация Object класса по умолчанию toString(), то есть:

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

вызывается при передаче объекта в println() метод

class Getter_Setter { 
     int id; 
     String name; 
     public List <Getter_Setter> buckets; 
     public String getName() { 
      return name; 
     } 
     public int getId() { 
      return id; 
     } 
     public void setId(int id) { 
      this.id = id; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public void setGetter_Setter(List <Getter_Setter> buck) { 
      this.buckets = buck; 
     } 
     @Override 
     public String toString() { 
      return "Getter_Setter [id=" + id + ", name=" + name + ", buckets=" 
        + buckets + "]"; 
     } 
0

Используйте стиль foreach для итерации. Это обобщенный метод итерации. Он автоматически превращает объекты в ваш общий тип для вас. i.e obj к экземпляру Getter_Setter.

public static void run() { 

     List <Getter_Setter> getList = sum(); 


     foreach(Getter_Setter g: getList){ 

      System.out.println(g.getId()); 

     System.out.println(g.getName()); 
      } 
    } 
1

ваших sum методов возвращает типизированный List<Getter_Setter>, так что вы можете получить сильно типизированный итератор от него:

List<Getter_Setter> getList = sum(); 
Iterator itr<Getter_Setter> = getList.iterator(); 

, которая позволяет непосредственно получить Getter_Setter элементов, на которых вы можете позвонить в getId() и getName() методы:

Iterator<Getter_Setter> itr = getList.iterator(); 
while (itr.hasNext()) { 
    Getter_Setter item = its.next(); 
    System.out.println(item.getId()); 
    System.out.println(item.getName()); 
} 
Смежные вопросы