Language/JAVA
[JAVA]컬렉션 프레임워크
바까
2020. 7. 2. 18:04
반응형
컬렉션 프레임워크
-
프로그램 구현에 필요한 자료구조(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();
}
}
반응형