본문 바로가기

🌈 백엔드/객체 지향

JAVA_객체지향_컬렉션 프레임워크 (자료구조)

반응형
SMALL

 

 

[1] 컬렉션 프레임워크


(1) 컬렉션 프레임워크 

  • 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리
  • 실제 구현을 직접 할 필요없이 템플릿을 활용하여 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음
  • 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요함
  • 자바는 java.util 패키지에 제네릭 클래스로 템플릿이 구현되어있다 

(2) 컬렉션 Collection 인터페이스 

  • 하나의 객체(요소)를  관리하는데 필요한 메서드가 선언된 인터페이스
  • 학년 , 과목 , 이름 ,주소 등 

         (2-1) 리스트 List 인터페이스  

  • 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스
  • 차례대로 1번, 2번 등 순서를 매기고 몇번째를 어떻게 할건지에 따른 수행이 필요할떄
  • 배열 array , 연결리스트Linkedlist 의 구현을 위한 인터페이스
  • 중복을 허용한다 
  • ArrayList, Vector, LinkedList, Stack, Queue 등...

         (2-2) 세트 Set 인터페이스 

  • 집합을 의미한다 
  • 중복을 허용하지 않는다
  • 요소들은 유일한 값이다
  • 주번, 사번, 아이디 등 변하지 않는 값 
  • 순서와 상관없이 검색을 위해 주로 사용한다 
  • 순서와 관계없이 중복을 허용하지 않고 유일한 값을 관리하는데 필요한 메서드가 선언됨
  • 아이디, 주민번호, 사번등을 관리하는데 유용
  • 저장된 순서와 출력되는 순서는 같을수도 있고 다를수도 있다. 
  • HashSet, TreeSet 등...

 

(3) 맵 Map 인터페이스  

  • 쌍(pair)로 이루어진 객체를 관리하는데 사용하는 메서드들이 선언된 인터페이스
  • 객체는 key-value의 쌍으로 이루어짐
  • key는 중복을 허용하지 않음
  • HashTable, HashMap, Properties, TreeMap 등이 Map 인터페이스를 구현 함
  • 맵 인터페이스는 키와 벨류 를 쌍으로 관리할때 사용한다

 

(4) Tree 가 들어가 있는 자료구조 

  • 트리는 정렬이 될때 사용한다
  • 필요한 요소를 찾기 위해 비교할때 사용한다 

 

 

[2] Iterator 


(1) Iterator 객체 순회  

  • 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하기 위해 필요한 개념 
  • 순서가 있는 List 인터페이스의 경우는 Iterator를 사용 하지 않고 get(i) 메서드를 활용할 수 있다 
  • Set 인터페이스의 경우 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 객체를 순회함

(2) Iterator 사용하기 

 

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

(3) Iterator 사용 예제 

 

멤버쉽 관리하기 

Member 클래스를 만들고, 아이디와 이름을 멤버 변수로 선언

Member 클래스로 생성된 인스턴스들을 관리하는 클래스를 컬렉션 프레임워크 클래스들을 활용하여 구현한다.
  • 멤버 변수를 선언한다 
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(){   //toString 메소드 오버로딩
		return memberName + " 회원님의 아이디는 " + memberId + "입니다";
	}
}
  • 멤버회원을 ArrayList 리스트에 담아서 추가 및 삭제 하여 관리한다 
  • ArrayList 리스트에서는 get(i)를 사용하여 저장된 요소를 참조할수 있지만 Iterator를 사용하여 가져올수도 있다

public class MemberArrayList {

	private ArrayList<Member> arrayList;  // ArrayList 선언 

	public MemberArrayList(){
		arrayList = new ArrayList<Member>();  //멤버로 선언한 ArrayList 생성
	}
	
	public void addMember(Member member){  //ArrayList 에 멤버 추가
		arrayList.add(member);
	}
	
	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;                   // true 반환
			}
		}
		
		System.out.println(memberId + "가 존재하지 않습니다");  //for 가 끝날때 까지 return 이 안된경우
		return false;                   
}

		
		System.out.println(memberId + "가 존재하지 않습니다");  //for 가 끝날때 까지 return 이 안된경우
		return false;                   
	}
	
	public void showAllMember(){
		for(Member member : arrayList){
			System.out.println(member);
		}
		System.out.println();
	}
}
  • 수행 클래스 
public class MemberArrayListTest {

	public static void main(String[] args) {

		MemberArrayList memberArrayList = new MemberArrayList();
		
		Member memberLee = new Member(1001, "이순신");
		Member memberKim = new Member(1002, "김유신");
		Member memberKang = new Member(1003, "강감찬");
		Member memberHong = new Member(1004, "홍길동");
		
		memberArrayList.addMember(memberLee);
		memberArrayList.addMember(memberKim);
		memberArrayList.addMember(memberKang);
		memberArrayList.addMember(memberHong);
		
		memberArrayList.showAllMember();
		
		memberArrayList.removeMember(memberHong.getMemberId());
		memberArrayList.showAllMember();
	}
}

 

 

 

반응형
LIST