제주 탈출 일지

패스트캠퍼스 챌린지 26일차 본문

패스트캠퍼스 챌린지!

패스트캠퍼스 챌린지 26일차

귀건 2021. 10. 1. 21:51
728x90
반응형

10. 자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크

컬렉션 프레임워크

프로그램 구현에 필요한 자료구조를 구현해 놓은 라이브러리

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

 

Collection 인터페이스, Map 인터페이스 두개로 구성되어 있음

Collection 인터페이스 하위에는 List, Set 인터페이스로 되어 있다.

Collection은 하나의 요소만을 관리함.

 

Set은 중복을 허용하지 않음.

HashSet을 가장 많이 사용한다. 순서와는 관계없다.

 

TreeSet

"Tree" 키워드가 있는 이진 탐색 트리가 구현이 되어 있다.(레드 블랙 트리로 구현되어 있다.)

-> 정렬이 가능하다.

비교하는 데 필요한 요소를 가지고 있는 것을 구현하는 데 사용한다.

 

Map

Key, Value 페어로 관리. key는 유일하다. (파이썬 딕셔너리)

"TreeMap" Key로 정렬이 가능하다.

HashMap을 일반적으로 많이 사용함.

 

내용이 너무 많기 때문에 부족한 부분은 따로 찾아봐야 한다.....

핵심적인 부분만 짚고 넘어 갈 것.

 

 

11. 순차적으로 자료를 관리하는 List 인터페이스를 구현한 클래스와 그 활용

ArrayList를 활용하는 클래스를 만듬(ArrayList를 일부 흉내냄)

 

Member 클래스

package ch10;

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 + "입니다";
	}


}

이 Member를 ArrayList로 관리하는 클래스를 만듬

 

MemberArrayList 클래스

package ch10;

import java.util.ArrayList;

public class MemberArrayList {
	
	private 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) {
		
		for(int i= 0; i < arrayList.size(); i++ ) {
			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 showAllMember() {
		
		for ( Member member : arrayList ) {
			System.out.println(member);
			
		}
		
		System.out.println();
		
	}

}

ArrayList 는 처음부터 <Member> 형으로 선언되고, 생성자는 ArrayList 생성과 비슷하게 없거나, size를 입력받음

ArrayList를 사용할 때 특정 인덱스의 값은 get(index)로 가져오고, (여기서는 Member 인스턴스가 가져와진다.)

특정 인덱스의 값을 삭제하기 위해서는 remove(index)를 사용한다.

ArrayList 맨 뒤에 추가할 때는 add( value ) 를 사용한다.

 

이런 식으로 사용하는 메소드들을 정의 하고 MemberArrayListTest에서 사용한다.

 

MemberArrayListTest 클래스

 

package ch10;

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();

		
	}

}

 

addMember로 member 인스턴스들을 다 ArrayList에 넣는 것을 볼 수있고, 중간에 하나의 인스턴스 값을 getMemberId로 Id 값을 비교해서 지우는 removeMember 메소드를 이용해 삭제했다. 홍길동 회원이 지워진 것을 확인할 수 있었다.

 

f1으로 document를 확인해보면 다양한 메소드들이 있는데 모르는 게 있을 때마다 확인해보면 될 것 같다.

 

12. Collection 요소를 순회하는 Iterator

요소의 순회란 ?

컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하는 것

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

Set 인터페이스의 경우 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 객체를 순회함

 

Iterator 메소드

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

E next() : 다음에 있는 요소를 반환하고 다음 요소를 가리킴

 

list의 remove()는 Object를 받으면 해당 ArrayList에서 순회하며 처음만난 Object를 삭제하는 듯 하다.

- java doc 

public boolean removeMember(int memberId) {
		
//		for(int i= 0; i < arrayList.size(); i++ ) {
//			Member member = arrayList.get(i);
//			
//			int tempId = member.getMemberId();
//			if(tempId == memberId) {
//				arrayList.remove(i);
//				return true;
//			}
//		}
		
		Iterator<Member> ir = arrayList.iterator();
		while(ir.hasNext()) {
			Member member = ir.next();
			
			if(member.getMemberId() == memberId) {
				arrayList.remove(member);
				return true;
			}
			
		}
		
		System.out.println(memberId + "가 존재하지 않습니다.");
		return false;
	}

Iterator를 arrayList.iterator로 받고 hasNext와 next로 순회하는 것을 볼 수 있다. 위의 주석과 동일하게 수행된다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 

 

728x90
반응형
Comments