1) 자료구조를 효율적으로 사용하고, 일관성 있게 접근하기 위한 툴
- 자료구조를 효율적으로 사용하고, 일관성 있게 접근하기 위한 툴
- 컬렉션 인터페이스 : 자료구조의 추가, 수정, 삭제, 검색을 위한 인터페이스
- 컬렉션 클래스 : 컬렉션 인터페이스를 구현한 클래스
- 패키지 : java.util
2) Collection 인터페이스
- 컬렉션 프레임워크의 최상위 인터페이스
- 객체를 추가, 삭제, 검색 등을 할 수 있는 일반적인 자료구조의 기능을 정의
1) List 인터페이스
- Collection 인터페이스의 하위 인터페이스
- 객체의 추가, 삭제, 검색, 수정이 가능
- 순서가 있는 자료 구조로 배열과 같이 인덱스로 관리
- 동일한 객체의 중복 저장 가능
- List 인터페이스를 구현한 컬렉션 클래스: ArrayList, LinkedList, Vector, Stack
2) ArrayList 클래스
- List 인터페이스를 구현한 대표적인 컬렉션 클래스
- ArrayList 객체 생성
모든 종류의 객체를 저장할 수 있는 자료구조
한 종류의 객체만 저장할 수 있는 자료구조
3) LinkedList 클래스
- List 인터페이스와 Queue 인터페이스를 구현
- LinkedList 자료 구조
인접한 노드와의 참조 링크를 이용한 체인과 같은 구조
ArrayList 클래스와 동일하게 사용- Queue 자료 구조
FIFO(First In First Out)구조 : 먼저 추가된 객체가 먼저 나오는 파이프와 같은 구조
4) Stack 클래스
- Vector 클래스의 하위 클래스
- Stack 자료 구조
LIFO(Last In First One) 구조 : 마지막에 추가된 객체가 먼저 나오는 항아리와 같은 구조
1) Set 인터페이스
- Collection 인터페이스의 하위 인터페이스
- 객체의 추가, 삭제, 검색, 수정이 가능
- 순서가 없는 자료 구조
- 동일한 객체의 중복 저장 불가
- 주요 메소드 : List 컬렉션과 동일
- HashSet 클래스 : Set 인터페이스를 구현한 컬렉션 클래스HashSet 클래스 : Set 인터페이스를 구현한 컬렉션 클래스
2) Map 인터페이스
- 키(Key)와 값(Value)의 쌍으로 이루어진 구조를 정의
- 순서가 없는 자료 구조
- 키(Key)는 중복 불가, 값(Value)은 중복 가능
- HashMap 클래스 : Map 인터페이스를 구현한 컬렉션 클래스
1) 입력 메뉴 : ID와 암호를 입력 받아서 컬렉션에 저장한다.
2) 로그인 메뉴 : ID와 암호를 입력 받아서 로그인 한다.
3) 목록 메뉴 : 등록된 ID와 암호를 화면에 출력한다.
package login;
import java.util.*;
public class Login {
Map<String, String> map;
public Login() {
map = new HashMap<String,String>();
}
public boolean input(String id, String pw) {
if( map.containsKey(id) ) { // 동일한 ID가 있는지 검사
return false;
} else {
map.put(id, pw); // 동일한 ID가 없으면 저장
return true;
}
}
public boolean login(String id, String pw) {
String match = map.get(id); // id에 대한 암호 가져오기
if( match != null ) { // id가 없으면 null
if( match.equals(pw) ) return true;
}
return false;
}
public String toString() { // HashMap 자료 전체 출력
String result ="";
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()) {
String id = it.next();
String pw = map.get(id);
result += "ID=["+id+"] PW=["+pw+"]\n";
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Login lo = new Login();
int menu = 0;
Scanner kbd = new Scanner(System.in);
String id="", pw="";
do {
System.out.print("[1:입력][2:목록][3:로그인][4:종료] : ");
menu = kbd.nextInt();
kbd.nextLine(); // 엔터값 처리
switch(menu) {
case 1:
System.out.print("ID를 입력하세요 : ");
id = kbd.nextLine();
System.out.print("암호를 입력하세요 : ");
pw = kbd.nextLine();
if( lo.input(id, pw))
System.out.println("등록 성공!!");
else System.out.println("ID 중복으로 등록 실패!!");
break;
case 2:
System.out.println(lo.toString());
break;
case 3:
System.out.print("ID : ");
id = kbd.nextLine();
System.out.print("PW : ");
pw = kbd.nextLine();
if( lo.login(id, pw))
System.out.println("로그인 성공!!");
else System.out.println("로그인 실패!!");
break;
case 4:
System.exit(0); // 프로그램 종료
}
} while(true);
}
}
<Result>
[1:입력][2:목록][3:로그인][4:종료] : 1
ID를 입력하세요 : aaa
암호를 입력하세요 : bbb
등록 성공!!
[1:입력][2:목록][3:로그인][4:종료] : 2
ID=[aaa] PW=[bbb]
[1:입력][2:목록][3:로그인][4:종료] : 1
ID를 입력하세요 : bbb
암호를 입력하세요 : ccc
등록 성공!!
[1:입력][2:목록][3:로그인][4:종료] : 3
ID : aaa
PW : ccc
로그인 실패!!
[1:입력][2:목록][3:로그인][4:종료] : 3
ID : aaa
PW : bbb
로그인 성공!!
[1:입력][2:목록][3:로그인][4:종료] : 4