Shuchita
Shuchita

Reputation: 13

Fetch data from List using iterator

I am trying to fetch the data using List but by using iterator. It is displaying me the object. How can I fetch the data from it?

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

Upvotes: 1

Views: 4428

Answers (3)

Ankur Anand
Ankur Anand

Reputation: 3904

Since you have not Overridden any toString() method it's giving you object hash code you need to override this(end code snippet) to print things what you want to print from that class otherwise

the default toString() implementation of the Object class, that is:

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

gets called when you pass object in println() method

 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 + "]";
        }

Upvotes: 0

Olivier Croisier
Olivier Croisier

Reputation: 6149

Your sum methods returns a typed List<Getter_Setter>, so you can get a strongly-typed iterator from it :

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

Which allows you to directly retrieve Getter_Setter elements, on which you can call the getId() and getName() methods :

Iterator<Getter_Setter> itr = getList.iterator();
while (itr.hasNext()) {
    Getter_Setter item = its.next();
    System.out.println(item.getId());
    System.out.println(item.getName());
}

Upvotes: 1

Ace McCloud
Ace McCloud

Reputation: 900

Use the foreach style to iterate. It is a generic typed iteration method. It automatically makes the objects into your generic type for you. i.e obj to instance of 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());
          } 
    }

Upvotes: 0

Related Questions