[JAVA][패스트캠퍼스]컬렉션 프레임워크_Map 인터페이스
36317 단어 JavafastcampusJava
Map 인터페이스
- key-value pair의 객체를 관리하는데 필요한 메서드가 정의됨
- key는 중복 될 수 없음
- 검색을 위한 자료구조
- key를 이용하여 값을 저장하거나 검색, 삭제 할때 사용하면 편리함
- 내부적으로 hash방식으로 구현함index = hash(key) // index는 저장위치
- key가 되는 객체는 객체의 유일성함의 여부를 알기 위해 equals()와 hashCode()메서드를 재정의함
HashMap 클래스
- Map 인터페이스를 구현한 클래스 중 가장 일반적으로사용하는 클래스
- HashTable 클래스는 자바2부터 제공된 클래스로 Vector처럼 동기화를 제공함
- pair 자료를 쉽고 빠르게 관리할 수 있음
Member.java
package collection.hashmap;
public class Member {
private int memberId;
private String memberName;
public Member() {}
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;
}
public String toString() {
return memberName+"회원님의 아이디는"+ memberId+"입니다.";
}
@Override
public int hashCode() {
return memberId;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member member=(Member)obj;
return (this.memberId == member.memberId);
}
return false;
}
}
MemberHashMap.java
package collection.hashmap;
import java.util.HashMap;
import java.util.Iterator;
public class MemberHashMap {
private HashMap<Integer,Member> hashMap;
public MemberHashMap() {
hashMap=new HashMap<Integer, Member>();
}
//집어넣을때는 put, 꺼내쓸때는 get
//모든 키값을 가져올때는 keyset()의 Set반환
//모든 콜렉션을 가져올때는 collection해서 values반환
public void addMember(Member member) {
hashMap.put(member.getMemberId(), member);
}
public boolean removeMember(int memberId) {
if(hashMap.containsKey(memberId)) {
hashMap.remove(memberId);
return true;
}
System.out.println("회원 번호가 없습니다.");
return false;
}
public void showAllMember() {
Iterator<Integer> ir=hashMap.keySet().iterator();
while(ir.hasNext()) {
int key=ir.next();
Member member=hashMap.get(key);
System.out.println(member);
}
System.out.println();
}
}
MemberHashMapTest.java
package collection.hashmap;
public class MemberHashMapTest {
//HashSet의 결과를 출력할 때 중복되지 않은 값을 허용하게 하려면 hashcode와 equals를 재정의해야한다.
//Member클래스에서 재정의하지 않으면 중복된값이 출력됨
public static void main(String[] args) {
MemberHashMap manager=new MemberHashMap();
Member memberLee= new Member(100,"Lee");
Member memberKim= new Member(200,"Kim");
Member memberPark= new Member(300,"Park");
Member memberPark2= new Member(300,"Park");
manager.addMember(memberLee);
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);
manager.showAllMember();
manager.removeMember(200);
manager.showAllMember();
}
}
TreeMap 클래스
- key객체를 정렬하여 key-value를 pair로 관리하는 클래스
- key에 사용되는 클래스에 Comparable, Comparator 인터페이스를 구현
- java에 많은 클래스들은 이미 Comparable이 구현되어 있음
- 구현된 클래스를 key로 사용하는 경우는 구현할 필요 없음
Member.java
package collection.treemap;
public class Member {
private int memberId;
private String memberName;
public Member() {}
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;
}
public String toString() {
return memberName+"회원님의 아이디는"+ memberId+"입니다.";
}
@Override
public int hashCode() {
return memberId;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Member) {
Member member=(Member)obj;
return (this.memberId == member.memberId);
}
return false;
}
}
MemberTreeMap.java
package collection.treemap;
import java.util.Iterator;
import java.util.TreeMap;
public class MemberTreeMap {
private TreeMap<Integer,Member> treeMap;
public MemberTreeMap() {
treeMap=new TreeMap<Integer,Member>();
}
public void addMember(Member member) {
treeMap.put(member.getMemberId(),member);
}
public boolean removeMember(int memberId) {
if(treeMap.containsKey(memberId)) {
treeMap.remove(memberId);
return true;
}
System.out.println("회원 번호가 없습니다.");
return false;
}
public void showAllMember() {
Iterator<Integer> ir=treeMap.keySet().iterator();
while(ir.hasNext()) {
int key=ir.next();
Member member=treeMap.get(key);
System.out.println(member);
}
System.out.println();
}
}
MemberTreeMapTest.java
package collection.treemap;
public class MemberTreeMapTest {
//정렬의 잘 되는 이유는 MemberTreeMap의 키값이 Integer이기 때문임
//Integer에 이미 Comparable이 구현되어 있기 때문에 굳이 정렬을 구현하지 않아도됨
public static void main(String[] args) {
MemberTreeMap manager=new MemberTreeMap();
Member memberPark= new Member(300,"Park");
Member memberLee= new Member(100,"Lee");
Member memberKim= new Member(200,"Kim");
Member memberPark2= new Member(400,"Park");
manager.addMember(memberLee);
manager.addMember(memberKim);
manager.addMember(memberPark);
manager.addMember(memberPark2);
manager.showAllMember();
manager.removeMember(200);
manager.showAllMember();
}
}
Author And Source
이 문제에 관하여([JAVA][패스트캠퍼스]컬렉션 프레임워크_Map 인터페이스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kjhabc2002/JAVA패스트캠퍼스컬렉션-프레임워크Map-인터페이스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)