HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavaMinor

Implementation of iterator pattern for any array of elements

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
iteratorelementsarrayanyforimplementationpattern

Problem

I have implemented Iterator pattern:

The interface Container.java:

public interface Container {

    Iterator getIterator();
}


Interface Iterator.java:

public interface Iterator{

    boolean hasNext();

    T next();
}


Class ResourceContainer.java:

public class ResourceContainer implements Container{

    private T names [];

    public ResourceContainer(T [] names){
        this.names = names;
    }

    @Override
    public Iterator getIterator() {      
        return new ResourceIterator(this.names);
    }

}


Class ResourceIterator.java:

public class ResourceIterator implements Iterator{

    private T [] names;
    private int index;

    public ResourceIterator(T [] names){
        this.names = names;
    }

    @Override
    public boolean hasNext() {
        boolean flag = false;

        if(this.index < this.names.length){
            flag = true;
        }

        return flag;
    }

    @Override
    public T next() {               
        return this.names[index++];
    }

}


An EmployeeVO class:

import java.io.Serializable;

public class EmployeeVO implements Serializable{

    private String name;
    private Integer id;
    private String departmentName;

    public EmployeeVO(Integer id, String name, String departmentName){
        this.name = name;
        this.id = id;
        this.departmentName = departmentName;
    }

    @Override
    public String toString(){
        StringBuffer strb = new StringBuffer();

        strb.append(" Id \"").append(this.id).append("\"")
            .append(" Name \"").append(this.name).append("\"")
            .append(" Department \"").append(this.departmentName).append("\"");

        return strb.toString();     
    }
}


Main class:

```
public class MainClass {

public static void main(String [] args){

Integer [] nums = new Integer[]{12,23,100,1};

Container container01 = new ResourceContainer(nums);
Iterator itr01 = c

Solution

I have two points for improvement:

-
Right now next() method increments the index. What happens if someone calls next() without calling hasNext() method?

  • Take care of ArrayIndexOutOfBoundsException or increment the index carefully.



-
You could implement remove() method (Optional)

Context

StackExchange Code Review Q#158385, answer score: 3

Revisions (0)

No revisions yet.