반응형
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
'🌈 백엔드 > 객체 지향' 카테고리의 다른 글
JAVA_객체지향_Object 클래스 (2) | 2023.07.13 |
---|---|
JAVA_객체지향_패키지 package & 클래스 패스 (0) | 2023.07.10 |
JAVA_객체지향_제네릭 프로그래밍 (0) | 2023.06.19 |
JAVA_객체지향_ Class 클래스 (0) | 2023.06.19 |
JAVA_객체지향_인터페이스 예시 (0) | 2023.06.19 |