이 포스트는 FastCampus에 이 강의를 보고 포스팅되었습니다.
문제가 될 시 삭제될 예정입니다.
컬렉션 프레임워크 중 List를 구현한 클래스를 알아보기 위해 멤버십을 관리하는 프로그램을 만들어볼 겁니다.
여기에서 확인하실 수 있습니다.
public class Member {
private int memberId; // 멤버 id
private String memberName; // 멤버 이름
// Getter와 Setter
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;
}
// ToString 재조정
@Override
public String toString() {
return "Member{" +
"memberId=" + memberId +
", memberName='" + memberName + '\'' +
'}';
}
}
import java.util.ArrayList; // ArrayList 클래스 import(중요)
public class MemberArrayList {
private ArrayList<Member> members;
// 생성자
public MemberArrayList() {
members = new ArrayList<>();
}
// 생성자(사이즈 있는 버전)
public MemberArrayList(int size) {
members = new ArrayList<>(size);
}
// 멤버 추가
public void addMember(Member member) {
members.add(member);
}
// 멤버 제거
public boolean removeMember(int memberId) {
for (int i = 0; i < members.size(); i++) {
Member member = members.get(i); // i번째에 해당하는 멤버를 불러오고
int tempId = member.getMemberId(); // 해당 멤버에 id를 불러온다.
if(tempId == memberId) {
members.remove(i); // 지우고자 하는 id와 멤버 id가 같을때 삭제한다.
return true;
}
}
System.out.println("해당 멤버id를 가지고 있는 유저가 없습니다.");
return false;
}
// 멤버 조회
public void showAllMember() {
for (Member member : members) {
System.out.println(member);
}
}
}
public class MemberTest {
public static void main(String[] args) {
// 멤버 2명 생성
Member member1 = new Member();
Member member2 = new Member();
// 멤버 id, name 설정
member1.setMemberId(1);
member1.setMemberName("홍길동");
member2.setMemberId(2);
member2.setMemberName("홍상두");
// ArrayList 생성, 멤버 추가
MemberArrayList list = new MemberArrayList();
list.addMember(member1);
list.addMember(member2);
// 멤버 조회
list.showAllMember();
// 멤버 삭제
list.removeMember(2);
// 다시 멤버 조회
System.out.println("");
list.showAllMember();
}
}
이렇게 작성을 끝냈습니다.
이렇게 끝내긴 좀 아쉬우니까, 삭제 부분을 리팩토링해보겠습니다.
Iterator라는 놈을 쓸겁니다.
Iterator는 컬렉션 프레임워크에 저장된 요소들을 하나씩 참조하는 놈입니다.
순서가 있는 List같은 경우에는 get()
이라는 메서드를 사용하면 되겠지만,
순서가 없는 Set같은 경우 get메서드가 없기에 요놈을 써서 순회해야 합니다.
hasNext()
: 다음 요소가 있는지 확인하는 메서드입니다. ( 반환값은 True | False )
Next()
: 다음 요소를 반환합니다.
public boolean removeMember(int memberId) {
// Iterator 선언
Iterator<Member> ir = members.iterator();
// ir.hasNext()가 false가 될 때까지 돈다.
while(ir.hasNext()) {
Member member = ir.next(); // 다음 요소를 member에 저장시키고
if (member.getMemberId() == memberId) { // memberId가 맞는지 확인
members.remove(member); // 삭제하고
return true // true 반환
}
}
System.out.println("해당 멤버id를 가지고 있는 유저가 없습니다.");
return false;
}
성공적으로 리팩토링이 종료되었습니다.
이것으로 List - ArrayList와 Iterator를 이용한 멤버십 만들기는 여기까지 하겠습니다.
다음시간에는 Set 인터페이스를 이용해 멤버십을 다시 리팩토링 해보겠습니다.
수고하셨습니다.