21.12.06
:Thread, 제네릭, 컬렉션 프레임워크
①프로세스와 스레드
1.프로세스(process)
1)실행 중인 하나의 프로그램을 말한다.
2)하나의 프로그램은 다중 프로세스를 만들기도 한다.
2.멀티 태스킹(multi tasking)
1)두 가지 이상의 작업을 동시에 처리하는것
2)멀티 프로세스: 독립적으로 프로그램들을 실행하고 여러가지 작업처리
3)멀티 스레드: 한 개의 프로그램을 실행하고 내부적으로 여러가지 작업처리
3.메인(main) 스레드(코드의 실행 흐름)
1)모든 자바 프로그램은 메인 스레드가 main() 메소드를 실행하면서 시작된다.
2)main()메소드의 첫 코드부터 아래로 순차적으로 실행한다.
3)main()메소드의 마지막 코드를 실행하거나, return문을 만나면 실행이 종료된다.
4)main 스레드는 작업 스레드들을 만들어서 병렬로 코드들을 실행할 수 있다.
즉 멀티 스레드를 생성해서 멀티 태스킹을 수행한다.
5)프로세스의 종료
-싱글 스레드: 메인 스레드가 종료하면 프로세스도 종료된다.
-멀티 스레드: 실행 중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않는다.
②작업 스레드 생성과 실행
1.몇 개의 작업을 병렬로 실행할지 결정
2.작업 스레드 생성 방법
1)Thread 클래스로부터 직접 생성
class Task implements Runnable{
public void run(){
스레드가 실행할 코드;
}
}
③제네릭(Generic)
1.제네릭(Generic)이란
1)타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는것
:자바 5부터 새로 추가된 기능이다.
:컬렉션, 람다식(함수적 인터페이스), 스트림, NIO에서 널리 사용된다.
:제네릭을 모르면 도큐먼트를 해석할 수 없다.
2.제네릭을 사용함으로서 얻는 이점
1)컴파일시 강한 타입 체크를 할 수 있다.
:실행시 타입 에러가 나는 것보다는 컴파일시에 미리 타입을 강하게 체크해서
에러를 사전에 방지한다.
2)타입변환을 제거할 수 있다.
List list = new ArrayList();
list.add("hello");
String str = (String)list.get(0);
▼
List<String> list = new ArrayList<String>();
list.add("hello");
String str = list.get(0);
④제네릭 타입
1.제네릭 타입이란
1)타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.
:선언시 클래스 또는 인터페이스 이름 뒤에 "<>" 부호가 붙는다.
:"<>"사이에는 타입 파라미터가 위치한다.
public class 클래스명<T>{...}
public interface 인터페이스명<T>{...}
2)타입 파라미터
:일반적으로 대문자 알파벳 한문자로 표현한다.
:개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야 한다.
⑤컬렉션 프레임워크
1.컬렉션 프레임워크
1)컬렉션: 사전적 의미로 요소(객체)를 수집해서 저장하는것
2)배열의 문제점
:저장할 수 있는 객체수가 배열을 생성할 때 결정
→불특정 다수의 객체를 저장하기에는 문제
:객체를 삭제했을 때 해당 인덱스가 비게 됨
→낱알이 듬성듬성 빠진 옥수수가 될 수 잇다.
→객체를 저장하려면 어디가 비어있는지 확인
3)컬렉션 프레임워크(인터페이스와 클래스들의 모음)
:객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리
:java.util 패키지에 포함
:인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스를 이용
2.컬렉션 프레임워크의 주요 인터페이스
1)List: 배열과 유사하게 인덱스로 관리
-특징
:인덱스로 관리
:중복해서 객체 저장 가능
-구현 클래스
ArrayList
Vector
LinkedList
2)Set: 집합과 유사
-특징
:순서를 유지하지 않고 저장
:중복 저장 안됨
-구현 클래스
HashSet, TreeSet
3)Map: 키와 값의 쌍으로 관리
-특징
:키와 값의 쌍으로 저장
:키는 중복 저장 안됨
-구현 클래스
HashMap, Hashtable, TreeMap, Properties
⑥List 컬렉션
1.ArrayList
List<String>list=new ArrayList<String>(30);
└ArrayList 내부에 생성되는 배열의 기본 크기
1)저장 용량(capacity)
- 초기:10
- 초기 용량 지정 가능
- 저장 용량을 초과한 객체들이 들어오면 자동적으로 늘어난다.
2)객체 제거
- 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다.
⑦Set 컬렉션
1.Set 컬렉션의 특징 및 주요 메소드
1)특징
-수학의 집합에 비유될 수 있다.
-저장 순서가 유지되지 않는다.
-객체를 중복해서 저장할 수 없다.
-하나의 null만 저장할 수 있다.
2)HashSet
Set<E> set = new HashSet<E>();
1)특징
-동일 객체 및 동등 객체는 중복 저장하지 않는다.
⑧Map 컬렉션
1.Map 컬렉션의 특징 및 주요 메소드
1)특징
-키와 값으로 구성된 Map.Entry 객체를 저장하는 구조
-키와 값은 모두 객체
-키는 중복될 수 없지만 값은 중복 저장 가능
2)HashMap
Map<K, V> map = new HashMap<K, V>();
└K: 키 타입 / V: 값 타입
특징: 키 타입은 String 타입을 많이 쓴다.
'BACK-END > JAVA' 카테고리의 다른 글
Map, HashMap (0) | 2022.05.24 |
---|---|
이클립스 오류 해결하기(1) (0) | 2021.12.09 |
API (0) | 2021.12.02 |
예외 (0) | 2021.12.01 |
인터페이스 (0) | 2021.12.01 |
댓글