프로그래밍 언어/JAVA(자바) 응용

45.Collection 요소를 순회하는 Iterator 구현

lroot 2022. 5. 31. 14:19
728x90
반응형

요소의 순회란

- 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하는것

- 순서가 있는 List인터페이스의 경우는 Iterator를 사용하지 않고 get(i) 메서드를 활용할 수 있음

- Set 인터페이스의 경우 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 객체를 순회함

 

Iterator 사용

- boolean hasNext() : 이후에 요소가 더 있는지를 체크하는 메서드, 요소가 있다면 true를 반환

- E next() : 다음에 있는 요소를 반환

 

MemberArrayList.java의 removeMember() 메서드를 Iterator를 활용하여 구현

- MemberArrayList.java

public class MemberArrayList {

private ArrayList<Member> arrayList;

public MemberArrayList() {
arrayList = new ArrayList<>();
}

public MemberArrayList(int size) {
arrayList = new ArrayList<>(size);
}

public void addMember(Member member) {
arrayList.add(member);
}

/*
 * public boolean removeMember(int memberId) { for(int i=0; i<arrayList.size();
 * i++) { Member member = arrayList.get(i);
 * 
 * int tempId = member.getMemberId(); if(tempId == memberId) {
 * arrayList.remove(i); return true; } } System.out.println(memberId +
 * "가 존재하지 않음."); return false; }
 */

public boolean removeMember(int memberId) {
Iterator<Member> ir = arrayList.iterator();
while(ir.hasNext()) {
Member member = ir.next();
int tempId = member.getMemberId();
if(tempId == memberId) {
arrayList.remove(member);
return true;
}
}
System.out.println(memberId+"가 존재하지 않습니다.");
return false;
}



public void showAllMember() {
for(Member member : arrayList) {
System.out.println(member);
}
System.out.println();
}

}