컬렉션 프레임워크 활용하기

JongseokLee·2021년 7월 27일
0
post-thumbnail

컬렉션 프레임워크 활용하기

1. 컬렉션 프레임워크 이해하기

1) 자료구조를 효율적으로 사용하고, 일관성 있게 접근하기 위한 툴

  • 자료구조를 효율적으로 사용하고, 일관성 있게 접근하기 위한 툴
  • 컬렉션 인터페이스 : 자료구조의 추가, 수정, 삭제, 검색을 위한 인터페이스
  • 컬렉션 클래스 : 컬렉션 인터페이스를 구현한 클래스
  • 패키지 : java.util

2) Collection 인터페이스

  • 컬렉션 프레임워크의 최상위 인터페이스
  • 객체를 추가, 삭제, 검색 등을 할 수 있는 일반적인 자료구조의 기능을 정의

2. List 컬렉션 활용하기

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) 구조 : 마지막에 추가된 객체가 먼저 나오는 항아리와 같은 구조

3. Set/Map 컬렉션 활용하기

1) Set 인터페이스

  • Collection 인터페이스의 하위 인터페이스
  • 객체의 추가, 삭제, 검색, 수정이 가능
  • 순서가 없는 자료 구조
  • 동일한 객체의 중복 저장 불가
  • 주요 메소드 : List 컬렉션과 동일
  • HashSet 클래스 : Set 인터페이스를 구현한 컬렉션 클래스HashSet 클래스 : Set 인터페이스를 구현한 컬렉션 클래스

2) Map 인터페이스

  • 키(Key)와 값(Value)의 쌍으로 이루어진 구조를 정의
  • 순서가 없는 자료 구조
  • 키(Key)는 중복 불가, 값(Value)은 중복 가능
  • HashMap 클래스 : Map 인터페이스를 구현한 컬렉션 클래스

3. 실습

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
profile
DataEngineer Lee.

0개의 댓글