day18

하나의 프로그램 : 하나의 프로세스 + 스레드(일반적으로 여러개)
			*스레드 : 동시에 일을 할 수 있게 하는 것
			예) 스레드 1개면 => 하나가 끝날때까지 넘어가지않고 대기
			   스레드 여러개 => 동시에 일들을 다발적으로 할 수 있음

컬렉션 프레임워크
 - 자료들을 효율적으로 관리하기 위한 것
 - 종류
	 	1) List :  
	 		- 순서 보장, 중복 가능 => 순서를 보장하기때문에 중복이 가능(내가 저장한 순서대로 내올 수 있음)
	 		- 종류
	 			1) ArrayList
	 				- List의 구현클래스 
	 				- 배열로 된 리스트
	 				- 탐색이 빠름(배열로되어있으니까 칸칸마다 주소가 정해져있어서 빠르게 찾을 수 있음)
	 				- 중간 삽입/삭제가 느림(중간에 값이 없어지면 모든 칸칸의 값을 뒤에서부터 하나씩 다 땡겨오고 추가가되면 밀어내거나 해야해서 )
	 			2) LinkedList
	 				- List의 구현클래스
	 				- 연결로된 리스트
	 				- 배열과 달리 연속적으로 되어있지 않음
	 				- 탐색이 느림(임의에 공간에 할당된 공간들을 주소를 통해 알고있음. 전, 후 주소값정도만 알아 ex:폴더같은개념인데 좀 달라)
	 				- 추가/삭제가 빠름( 추가하거나 삭제할 때, 삭제한 것의 주소만 전후에 알려주고 걔네 연결하고 빠지기만 함)
	 	2) Set 	:
	 		- 중복 불가능, 순서를 보장하지 않음 => 내가 저장한 순서대로 나온다는 보장이 없음. => 중복되면안되는 경우, 중복이 불가능한 경우에 사용함 / 예) 회원가입 ID
	 		- 종류
	 			1) HashSet
	 				- Hash코드를 이용하여 먼저 확인 한 후, equals()를 이용하여 확인
	 	3) Map	: 
	 		- key와 value로 이뤄짐. => key는 중복불가, value는 중복가능 / 예) key아이디 value비밀번호
	 		- 출력할 때, 조금 복잡
	 		- 종류
	 			1) HashMap
	 				- Map에 구현 클래스
	 		- 출력할 때, 2가지 방법이 있고 모두 set을 사용해야 함. 
 	
 	*List와 Set은 한 종류의 데이터를 관리, Map은 두 종류의 데이터를 관리	예) 데이터 한 개의 종류라 함은 한 개의 정수 또는 클래스 등등 이 될 수가 있는거지 	
 	*List와 Set은 value라는 하나로만 이뤄져있음
 	*List, Set, Map은 인터페이스.
 	*List, Set, Map은 중복체크를 equals를 통해 한다