List 인터페이스 구현 예제 / Iterator


List 인터페이스 구현 예제


List (순차적으로 자료를 관리)
ArrayList (List 인터페이스 상속받은 클래스)


  • Member.java

      public class Member {
    
          private int memberId;		//회원 아이디
          private String memberName;	//회원 이름
    		
          public Member(int memberId, String memberName) {
              this.memberId = memberId;
              this.memberName = memberName;
          }
    
          public int getMemberId() {
              return memberId;
          }
    
          public void setMemberId(int memberId) {
              this.memberId = memberId;
          }
    
          public String getMemberName() {
              return memberName;
          }
    
          public void setMemberName(String memberName) {
              this.memberName = memberName;
          }
    		
          @Override
          public String toString() {
              return memberName + " 회원님의 아이디는 " + memberId + "입니다.";
          }
    
      }
    


  • MemberArrayList.java

      import java.util.ArrayList;
    
      public class MemberArrayList {
    
          // ArrayList 선언
          private ArrayList<Member> 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) {
    
              // 해당 아이디를 가진 회원을 ArrayList에서 찾기
              for (int i = 0; i < arrayList.size(); i++) {
    
                  Member member = arrayList.get(i);
                  int tempId = member.getMemberId();
    				
                  // 아이디가 매개변수와 일치한다면 해당 멤버 삭제 > true 반환
                  if (tempId == memberId) {
                      arrayList.remove(i);
                      return true;
                  }
              }
    			
              // for문이 다 돌 때까지 return이 안된 경우
              System.out.println("해당 아이디가 존재하지 않습니다.");
              return false;
          }
    		
          public void showAllMember() {
    
              for (Member member : arrayList) {
                  System.out.println(member);
              }
          }
      }
    


  • (Main Class) MemberArrayListMain.java

      public class MemberArrayListMain {
    
          public static void main(String[] args) {
    
              MemberArrayList memberArrayList = new MemberArrayList();
    			
              Member member1 = new Member(101, "이밤");
              Member member2 = new Member(102, "강새벽");
              Member member3 = new Member(103, "최아침");
              Member member4 = new Member(104, "윤저녁");
    			
              memberArrayList.addMember(member1);
              memberArrayList.addMember(member2);
              memberArrayList.addMember(member3);
              memberArrayList.addMember(member4);
    			
              memberArrayList.showAllMember();
    			
              System.out.println();
              memberArrayList.removeMember(member3.getMemberId());
              memberArrayList.showAllMember();
          }
    
      }
    


  • 출력결과

      이밤 회원님의 아이디는 101입니다.
      강새벽 회원님의 아이디는 102입니다.
      최아침 회원님의 아이디는 103입니다.
      윤저녁 회원님의 아이디는 104입니다.
    
      이밤 회원님의 아이디는 101입니다.
      강새벽 회원님의 아이디는 102입니다.
      윤저녁 회원님의 아이디는 104입니다.
    



Iterator


  • Collection 요소를 순회 > 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조

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

  • Set 인터페이스의 경우 get(i) 메서드 제공되지 않음 > Iterator 활용하여 객체 순회

    • boolean hasNext() : 이후에 요소가 더 있는지 체크 > 있다면 true 반환

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

  • ex)

    • for문 사용

        // 회원 아이디 삭제 여부 반환
            public boolean removeMember(int memberId) {
      
                // 해당 아이디를 가진 회원을 ArrayList에서 찾기
                for (int i = 0; i < arrayList.size(); i++) {
      
                    Member member = arrayList.get(i);
                    int tempId = member.getMemberId();
      					
                    // 아이디가 매개변수와 일치한다면 해당 멤버 삭제 > true 반환
                    if (tempId == memberId) {
                        arrayList.remove(i);
                        return true;
                    }
                }
      				
                // for문이 다 돌 때까지 return이 안된 경우
                System.out.println("해당 아이디가 존재하지 않습니다.");
                return false;
            }
      
    • Iterator 사용

        import java.util.Iterator;
      
        ...
      
        public boolean removeMember(int memberId) {
      				
                // Iterator 사용하기
      				
                Iterator<Member> irIterator = hashSet.iterator();
      				
                while (irIterator.hasNext()) {
      					
                    Member member = (Member) irIterator.next();
      					
                    int tempId = member.getMemberId();
      					
                    if (tempId == memberId) {
                        hashSet.remove(member);
                        return true;
                    }
                }
      				
                System.out.println("해당 아이디가 존재하지 않습니다.");
                return false;
            }
      

Categories:

Java