[JAVA개념공부]Collection Framework, Map메소드 사용법
2021. 5. 30. 10:47ㆍ컴퓨터과학
728x90
반응형
ㆍCollection Framework
ㆍCollection : 객체의 집합.(데이터의 집합)
ㆍCollection Framework : 자료구조를 구현하는 클래스의 인터페이스 제공
인터페이스
Collection 인터페이스 구성 |
요약 | 종류 | Collection Interface와의 관계 | 자식 |
Set | 중복 불허, 순서 없이 객체삽입. 중복여부를 equals 메소드로 판단하기 때문에 메소드 생성 시 ‘equals’메소드 Override가 필요함. |
HashSet, TreeSet | Collection의 자식 | sorted set |
List (Sequence) | - 시작과 끝을 가진 선형구조 : 배열구조 중복 데이터 허용 |
Vector, Stack, ArrayList, | Collection의 자식 | - |
LinkedList : 중간데이터 관리 수월(추가, 삭제 등) | ||||
Map | - Map key(중복 불허)와 value쌍(중복 허용)으로 이루어진 객체 - Hash알고리즘으로 key값 읽어 오는 게 빠름 - key값은 value값을 가리킨다. |
HashTable HashMap |
Collection의 자식X | sorted map |
TreeMap : 정렬해서 관리한다. |
- Set은 중복 데이터 저장이 불가능하다. HashSet은 정렬되지 않은 데이터셋이다.
- Set은 중복 데이터 저장이 불가능하다. TreeSet은 정렬된 데이터셋이다.
ㆍMap구조를 통한 회원가입, 로그인 관리 프로그램 코딩 예시
※학생 개인 실습 내용입니다. 부족한 점이 있을 수 있음을 인지 해 주시길 부탁드립니다.
package day08;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Prob_이광용_수정 {
public static void main(String[] args) throws NotExistIDException, WrongPasswordException {
MemberService0 mem = new MemberService0();
mem.joinMember0(new Member0("lgy1", "1", "이광용1"));
mem.joinMember0(new Member0("lgy2", "q1w2e3", "이광용2"));
mem.login("lgy1", "1");
mem.login("lgy2", "q1w2e3");
}
}
/**
* 회원가입, 로그인 함수를 포함한 클래스
*
* @author leest
*
* @param <P>
*/
class MemberService0 {
Map<String, Member0> map = new HashMap<String, Member0>(); // 기본키 String = id
Member0[] members;
void joinMember0(Member0 member) {
map.put(member.getId(), member);
System.out.print("가입 성공 : " + map.get(member.getId()) +"\n");
// System.out.println(" map size ="+ map.size());
}
public void login(String id, String pw) throws NotExistIDException, WrongPasswordException {
map.forEach((key,v) -> {
if (map.get(key).getId() != null) {
if (map.get(key).getId().equals(id) && map.get(key).getPw().equals(pw)) {
System.out.print(map.get(key) + " 로그인성공 \n");
} else if(map.get(key).getId().equals(id) && !map.get(key).getPw().equals(pw)){
System.out.println("Pw가 틀림.");
//throw new WrongPasswordException();
}
} else {
System.out.println("없는Id");
//throw new NotExistIDException();
}
});
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((map == null) ? 0 : map.hashCode());
result = prime * result + Arrays.hashCode(members);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MemberService0 other = (MemberService0) obj;
if (map == null) {
if (other.map != null)
return false;
} else if (!map.equals(other.map))
return false;
if (!Arrays.equals(members, other.members))
return false;
return true;
}
@Override
public String toString() {
return "MemberService0 [map=" + map + ", members=" + Arrays.toString(members) + "]";
}
}
/**
* 멤버변수 포함하는 클래스
*
* @author leest
*
* @param <P>
*/
class Member0<P> {
private String id;
private String pw;
private String name;
public Member0() {
super();
}
public Member0(String id, String pw, String name) {
super();
this.id = id;
this.pw = pw;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Member0 [id=" + id + ", pw=" + pw + ", name=" + name + "]";
}
}
//class MemberService0<P>{
// Member0[] members;
// int count = 0;
//
// MemberService0(int size) {
// members = new Member0[size > 0 ? size : 100];
// }
//
// void joinMember0(Member0 member) {
// if (members.length == count) {
// Member0[] temp = new Member0[members.length * 2];
// System.arraycopy(members, 0, temp, 0, members.length);
// members = temp;
// temp = null;
// }
// members[count++] = member;
// }
//
// public Member0 login(String id, P pw) throws NotExistIDException, WrongPasswordException {
// Member0 data = null;
// for (int i = 0; i < count; i++) {
// if (members[i].getId().equals(id)) {
// if (members[i].getPw().equals(pw)) {
// System.out.printf("%s 로그인 완료! \n", members[i].getId());
// return members[i];
// } else {
// if (i == count - 1) {
// throw new WrongPasswordException();
// }
// }
// } else {
// if (i == count - 1)
// throw new NotExistIDException();
// }
// }
// return data;
// }
//}
/**
* 로그인에 대한 예외처리 클래스
*
* @author leest
*
*/
class WrongPasswordException extends Exception {
public WrongPasswordException() {
super("※ pw가 틀렸습니다 ※");
}
public WrongPasswordException(String msg) {
super(msg);
}
}
class NotExistIDException extends Exception {
public NotExistIDException() {
super("※ id가 틀렸습니다 ※");
}
public NotExistIDException(String pw) {
super(pw);
}
}
728x90
반응형
'컴퓨터과학' 카테고리의 다른 글
REST, RESTful의 개념 (0) | 2021.07.28 |
---|---|
[SQL기초개념]Statement vs preparedStatement (0) | 2021.06.09 |
[JAVA개념공부]has-a 관계, Generic타입 (0) | 2021.05.27 |
[JAVA개념공부]Inner Class, 익명Inner Class, 람다식 (0) | 2021.05.26 |
[JAVA개념공부]인터페이스(Interface), 다형성, 인터페이스 통합 (0) | 2021.05.26 |