Skip to content

Commit

Permalink
Refac: Iterator 구현체를 익명클래스로 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
zhtmr committed Dec 29, 2023
1 parent 3e47e32 commit 771eaae
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 27 deletions.
40 changes: 15 additions & 25 deletions myapp/app/src/main/java/bitcamp/util/ArrayList.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,36 +71,26 @@ public E set(int index, E object) {
return (E) old;
}

/* 1) 외부에서 구현한 패키지 멤버 클래스를 사용한 경우 */
// @Override
// public Iterator<E> iterator() {
// return new ArrayListIterator<>(this);
// }

/* 2) static nested class 사용한 경우 */
/* 5) 익명 class 사용한 경우 */
@Override
public Iterator<E> iterator() {
return new IteratorImpl<>(this);
}


private static class IteratorImpl<E> implements Iterator<E> {
// local class 는 외부 클래스의 변수를 사용할 수 없다.
// 인터페이스를 구현하자마자 생성해야한다.
return new Iterator<>() {

ArrayList<E> list;
int cursor;

public IteratorImpl(ArrayList<E> list) {
this.list = list;
}
int cursor;

@Override
public boolean hasNext() {
return cursor >= 0 && cursor < list.size();
}
@Override
public boolean hasNext() {
return cursor >= 0 && cursor < ArrayList.this.size();
}

@Override
public E next() {
return list.get(cursor++);
}
@Override
public E next() {
return ArrayList.this.get(cursor++);
}
};
}

}
20 changes: 18 additions & 2 deletions myapp/app/src/main/java/bitcamp/util/LinkedList.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,11 +174,27 @@ public E[] toArray(final E[] arr) {
return values;
}


/* 5) 익명 클래스 */
@Override
public Iterator<E> iterator() {
return new LinkedListIterator<>(this);
}
return new Iterator<>() {

Node<E> cursor = LinkedList.this.first;

@Override
public boolean hasNext() {
return cursor != null;
}

@Override
public E next() {
E value = cursor.value;
cursor = cursor.next;
return value;
}
};
}

private static class Node<E> {

Expand Down

0 comments on commit 771eaae

Please sign in to comment.