본문 바로가기
Language/JAVA

[JAVA]컬렉션 프레임워크

by 바까 2020. 7. 2.
반응형

 

컬렉션 프레임워크
  • 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 라이브러리.

  • java.util 패키지에 구현되어 있음

  • 개발에 소요되는 시간을 절약하면서 최적화된 알고리즘을 사용할 수 있다.

  • 여러 인터페이스와 구현 클래스 사용 방법을 이해해야 한다.


Collection 인터페이스
  • 하나의 객체를 관리하기 위한 메서드가 정의된 인터페이스

  • 하위에 List와 set 인터페이스가 있다.

  • 여러 클래스들이  Collection 인터페이스를 구현

  List 인터페이스 Set 인터페이스
순서 순서가 있는 자료 관리 순서가 정해져 있지 않은 자료 관리
중복 허용 허용하지 않는다
인터페이스를 구현한 클래스 ArrayList, Vector, LinkedList, Stack, Queue 등 Hashset,TreeSet 등

 

Collection 인터페이스의 주요 메서드
  • boolean add(E e) : Collection 객체를 추가
  • void clear() : Collection의 모든 객체를 제거
  • Iterator<E> iterator : Collection을 순환할 반복자(iterator)를 반환
  • boolean remove(Object o) : Collection에 매개 변수에 해당하는 인스턴스가 존재하면 제거
  • int size() : Collection에 있는 요소의 개수를 반환

Map 인터페이스
  • 쌍(pair)로 이루어진 객체를 관리하는데 사용

  • key-value의 쌍으로 이루어진다.

  • Key는 중복 될 수 없다.

  • 여러 클래스들이 Map 인터페이스를 구현

 

Map 인터페이스의 주요 메서드
  • V put(K key, V value) : key에 해당하는 value 값을 map에 넣는다.
  • V get(K key) : key에 해당하는 value 값을 반환.
  • boolean containsKey(Object key) : Map에 해당 key가 있는지 여부를 반환
  • boolean containsValue(Object value) : Map에 해당되는 value가 있는지 여부를 반환.
  • Set keyset() : key 집합을 set으로 반환.(중복이 안되므로 set)
  • Collection values() : value를 Collection으로 반환.(중복 무관)
  • V remove(key) : key가 있는 경우 삭제 
  • boolean remove(Object key, Object value) : key가 있는 경우 key에 해당하는 value가 매개 변수와 일치할 때 삭제.

[실습]Member 클래스 정의

/*콜렉션 인터페이스*/
package collection;

public class Member {

	//필드(멤버 변수)를 선언
	private int memberId;		//회원아이디
	private String memberName;	//회원 이름
	
	//회원 아이디와 회원 이름을 매개변수로 받는 생성자를 정의
	public Member(int memberId, String memberName) {
		this.memberId = memberId;
		this.memberName = memberName;
	}

	//get(), set() 메서드 정의
	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() {
		// TODO Auto-generated method stub
		return memberName + "회원님의 아이디는" +memberId+"입니다.";
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		// hashCode() 메서드가 회원 아이디를 반환하도록 재정의 합니다.
		return memberId;
	}

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		// 매개변수로 받은 회원 아이디가 자신의 회원 아이디와 같다면 true로 반환
		if(obj instanceof Member) {
			Member member = (Member)obj;
			if(this.memberId==member.memberId) 
				return true;
			else
				return false;
		}
		return false;
	}
	
	
}



 

[실습] MemberArrayList 클래스 정의

/*콜렉션 인터페이스*/
package collection.arrayList;

import java.util.ArrayList;	
import collection.Member;	//<Member>를 import


public class MemberArrayList {

	//필드(멤버 변수)를 선언
	private ArrayList<Member> arrayList;
	
	//디폴트 생성자를 정의
	public MemberArrayList() {
		//Member형으로 선언한 ArrayList를 생성
		arrayList = new ArrayList<Member>();
	}
	
	//메서드(멤버 함수)를 정의
	//회원을 추가하는 메서드
	public void addMember(Member member) {
		arrayList.add(member);
	}
	//회원을 삭제하는 메서드
	public boolean remove(int memberId) {
		
		for(int i=0; i<arrayList.size(); i++) {
			//get()메서드로 회원을 순차적으로 가져온다
			Member member = arrayList.get(i);
			int tempId = member.getMemberId();
			//회원 아이디가 매개 변수와 일치하면
			if(tempId == memberId) {
				//해당 회원을 삭제
				arrayList.remove(i);
				return true;
			}
		}
		//반복문이 끝날때까지 해당 아이디를 찾지 못한 경우 메시지를 출력
		System.out.println(memberId +"가 존재하지 않습니다.");
		return false;
	}
	
	//전체 회원을 출력하는 메서드
	public void showAllMembers() {
		
		for(Member member:arrayList) {
			System.out.println(member);
		}
		System.out.println();
	}
	
}

 

[실습] MemberArrayListTest 클래스 실행

///2020-06-30

/*콜렉션 인터페이스*/
package collection.arrayList;
import collection.Member;	//collection.Member를 import

public class MemberArrayListTest {

	//main() 메서드 생성
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//memberArrayList 객체를 생성
		MemberArrayList memberArrayList = new MemberArrayList();
		
		//새로운 회원 인스턴스생성
		Member memberA = new Member(1001,"라이언");
		Member memberB = new Member(1002,"어피치");
		Member memberC = new Member(1003,"무지");
		
		//memberArrayList 객체에 회원을 추가
		memberArrayList.addMember(memberA);
		memberArrayList.addMember(memberB);
		memberArrayList.addMember(memberC);
		
		//전체 회원을 출력
		memberArrayList.showAllMembers();
		//어피치 회원을 삭제
		memberArrayList.remove(memberB.getMemberId());
		//전체회원을 출력
		memberArrayList.showAllMembers();
		
		//아이디가 중복된 회원을 추가
		Member memberD = new Member(1003,"콘");
		memberArrayList.addMember(memberD);
		
		//전체회원을 출력
		memberArrayList.showAllMembers();
		
	}

}

 

[실습] HashSet 클래스 실행

/*콜렉션 인터페이스*/
package collection.hashSet;

import java.util.HashSet;

public class HashSetTest {


	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//hashSet 객체를 생성
		HashSet<String> hashSet = new HashSet<String>();
		
		//문자열 클래스를 이용하여 회원을 추가
		hashSet.add(new String("라이언"));
		hashSet.add(new String("어피치"));
		hashSet.add(new String("무지"));
		
		//hashSet 객체를 출력
		System.out.println(hashSet); //[어피치, 라이언, 무지]
		
	}

}

 

[실습] MemberHashSet 클래스 정의

/*콜렉션 인터페이스*/
package collection.hashSet;

import java.util.HashSet;
import java.util.Iterator;
import collection.Member;

public class MemberHashSet {

	//필드(멤버 변수)를 선언
	private HashSet<Member> hashSet;
	
	//디폴트 생성자를 정의
	public MemberHashSet() {
		//hashSet 객체를 생성
		hashSet = new HashSet<Member>();
	}
	
	//메서드(멤버 함수)를 정의
	//회원을 추가하는 메서드
	public void addMember(Member member) {
		//hashSet 객체에 회원을 추가합니다.
		hashSet.add(member);
	}
	
	//회원을 삭제하는 메서드
	public boolean removeMember(int memberId) {
		//Iterator를 활용해 순회
		Iterator<Member> iMember = hashSet.iterator();
		
		//매개변수로 받은 회원 아이디에 해당하는 회원을 삭제
		while(iMember.hasNext()) {
			//회원을 하나씩 가져온다.
			Member member = iMember.next();
			int tempId = member.getMemberId();
			//아이디를 비교하여 같은 아이디인 경우
			if(tempId == memberId) {
				//회원을 삭제
				hashSet.remove(member);
				return true;
			}
		}
		System.out.println(memberId+"가 존재하지 않습니다.");
		return false;
	}
	
	//전체 회원을 출력하는 메서드
	public void showAllMembers() {
		for(Member member:hashSet) {
			System.out.println(member);
		}
		System.out.println();
	}
}

 

[실습] MemberHashSetTest 클래스 실행

/*콜렉션 인터페이스*/
package collection.hashSet;

import collection.Member;


public class MemberHashSetTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//memberHashSet 객체를 생성
		MemberHashSet memberHashSet = new MemberHashSet();
		
		//회원을 생성
		Member memberA = new Member(1001, "라이언");
		Member memberB = new Member(1002, "어피치");
		Member memberC = new Member(1003, "무지");
		
		//회원을 추가
		memberHashSet.addMember(memberA);
		memberHashSet.addMember(memberB);
		memberHashSet.addMember(memberC);
		
		//전체 회원을 출력
		memberHashSet.showAllMembers();
		
		//어피치 회원을 삭제
		memberHashSet.removeMember(memberB.getMemberId());
		
		//전체 회원을 출력
		memberHashSet.showAllMembers();
		
		//아이디가 중복된 회원을 추가
		Member memberD = new Member(1003,"콘");
		memberHashSet.addMember(memberD);
		
		//전체회원을 출력
		memberHashSet.showAllMembers();
		
	}

}


 


 

반응형

댓글