How to iterate over a class in an ArrayList?

import java.util.*;
class Animal{
String dog; String cat;
}
public class Arraylist {
 public static void main (String[] args) {

     Animal var=new Animal();
     var.dog="german";
     var.cat="persian";

     List <Animal> al=new ArrayList<Animal>();
     al.add(var);

     Iterator itr= al.listIterator();
     while(itr.hasNext())
     {System.out.print(", "+ itr.next());}
   }
}

Now I would like to iterate over the elements of the class. How could I do this? Thanks!

+4
source share
2 answers

You repeat the elements of your class.

I see some potential problems:

  • Rename the class from Arraylistto something else, less like java.util.ArrayList.

  • Change Iterator itr=...toIterator<Animal> itr=...

  • If your class Animaldoes not cancel toString, it should. Otherwise, System.out.print(", "+ itr.next())it will not print a meaningful result.

Regarding the third paragraph. Add to the class Animal(and possibly subclasses of this class, depending on what you want to print):

@Override
public String toString ()
{
    return "someStringThatRepresentsTheStateOfYourAnimalObject";
}
+1

, , , Java-.

, Arraylist . - Java.Util ArrayList, , , ! Animal? AnimalList. ArrayList (, , , Java ArrayList)? , , !

Animal , , , .

Iterator, Iterable (, Java ArrayList), Iterator. , . ! , . .

toString, Animal @2a139a55, , Animal. toString, . java- , , , , toString, - .

, ArrayList ( Arraylist), resize array coud:

import java.util.Iterator;
import java.util.NoSuchElementException;

class Animal{
    String dog;
    String cat;

    @Override
    public String toString() {
        return "Dog: " + dog + "\nCat: " + cat + "\n\n";
    }
}


public class Arraylist<Item> {

    public  Item list[];
    private int N = 0;


    public Arraylist() {
        list = (Item[]) new Object[2];
    }

    public boolean isEmpty() {
        return N == 0;
    }

    public int size() {
        return N;
    }

    private void resize(int max) {
        Item[] temp = (Item[]) new Object[max];
        for (int i = 0; i < N; i++) {
            temp[i] = list[i];
        }
        list = temp;
    }

    public void add(Item item) {
        if (N == list.length)
            resize(2 * list.length);
        list[N++] = item;
    }

    public Item remove() {
        if (isEmpty())
            throw new NoSuchElementException();
        Item item = list[N-1];
        list[N-1] = null;
        N--;
        if (N > 0 && N == list.length/4)
            resize(list.length/2);
        return item;
    }



    public Iterator<Item> iterator() {
        return new ArraylistIterator();
    }


    private class ArraylistIterator implements Iterator<Item> {

        private int current = 0;

        private ArraylistIterator() {
            current = 0;
        }

        @Override
        public boolean hasNext() {
            return (current != N);
        }

        @Override
        public Item next() {
            if (hasNext())
                return list[current++];
            throw new NoSuchElementException();
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }
    }


    public static void main (String[] args) {

        Animal var=new Animal();
        Animal var2=new Animal();
        Animal var3=new Animal();
        Animal var4=new Animal();

        var.dog="german";
        var.cat="persian";
        var2.dog="german1";
        var2.cat="persian1";
        var3.dog="german2";
        var3.cat="persian2";
        var4.dog="german3";
        var4.cat="persian3";

        Arraylist al = new Arraylist();

        al.add(var);
        al.add(var2);
        al.add(var3);
        al.add(var4);


        Iterator itr= al.iterator();
        while(itr.hasNext())
        {
            System.out.print(itr.next());
        }
    }
}

, !

0

Source: https://habr.com/ru/post/1620312/


All Articles