[Java]활용 5~12강 까지의 내용 정리
컬렉션 프레임워크부터 스레드까지
Random 클래스
nextInt() 메소드의 매개변수를 주면, 매개변수보다 작은 값이 출력됨
컬렉션 프레임워크
- 데이터들을 모아놓을 수 있는 뼈대, 데이터를 효율적으로 저장 및 처리하기 위한 다양한 클래스와 인터페이스들의 모음
- 객체지향적 설계를 통해 정형화된 것
- 여러 클래스들과 메소드를 제공하여 쉽게 처리 가능
- 인터페이스를 이용한 다형성 개념을 이용
- 메소드가 정형화되어 있어 사용하기 용이
- 재사용성이 높은 코드 작성 가능
컬렉션 프레임워크의 구조
List,Set,Map 인터페이스로 구성된다. List와 Set은 Collection 인터페이스의 하위 인터페이스
컬렉션 프레임워크 인터페이스의 특징과 주요 클래스
인터페이스 | 특징 | 주요 클래스 |
---|---|---|
List | 데이터의 순서(index) 존재, 중복 저장 가능 | ArrayList,LinkedList,Stack,Vector |
Set | 데이터의 순서(index) 존재하지 않음, 중복 저장 불가 | HashSet,TreeSet |
Map | 키(key)와 값(value)으로 저장, 키는 중복 불가 | HashMap,Hashtable,TreeMap,Properties |
배열과 List 객체의 차이
배열 | List 객체 |
---|---|
길이 고정 | 길이 변경 가능 |
타입 미리 지정 | 다양한 타입 |
대괄호를 통한 인덱스 접근 | 메소드를 사용한 인덱스 접근 |
List
- List에서 get 메소드의 리턴 타입은 Object 이기 때문에 형변환 불가
- List 인터페이스를 구현한 클래스는 ArrayList, LinkedList, Vector 등이 존재
Set
- 저장 순서(index)가 없다
- Map 인터페이스와 함께 사용하거나 다른 라이브러리에서 Set 자료형으로 리턴하는 경우가 예시
Set 인터페이스의 주요 메소드
메소드명 | 설명 |
---|---|
add(object) | 요소 추가 |
isEmpty(object) | 해당 객체가 존재하는지 여부 |
remove(object) | 해당 객체 제거 |
Iterator
모든 컬렉션 프레임워크의 데이터를 접근할 수 있도록 정형화된 인터페이스
Iterator를 사용하여 set 탐색하기
Iterator iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
Map
Collection 인터페이스의 하위 객체가 아니다
Map 인터페이스의 주요 메소드
메소드명 | 설명 |
---|---|
put(key,value) | key,value로 값 추가 |
get(key) | 해당 key로 값 리턴 |
keySet() | 모든 key를 set 객체로 리턴 |
제네릭
- 객체의 데이터 타입을 미리 명시해주는 것 →
List list
대신List<타입> list
처럼 명시한다 - 제네릭 타입을 지정하면 메서드도 재정의 된다. 따라서 get()같은 경우에도 정의된 타입으로 리턴됨
제네릭을 사용하는 이유
(1) 형변환 코드 불필요
(2) 컴파일 시 강한 타입 체크, 에러를 줄일 수 있다
제네릭을 이용해 클래스를 생성한 예
public class Test<T> {
T value;
void set(T value){
this.value = value;
}
T get(){
return value;
}
}
내부 클래스
- 클래스 안의 클래스로, 멤버 클래스와 로컬 클래스가 있다
- 내부 클래스도 클래스이기 때문에 $ 기호로 구분되어 개별적으로 클래스 파일이 생성된다
Outer.Inner i = new Outer.Inner() //static 내부 클래스는 직접 접근하여 호출 가능
Outer o = new Outer();
//인스턴스 내부 클래스는 외부 클래스 객체를 통해 접근 후 생성자를 통해 내부 클래스 생성
Outer.Inner2 i2 = o.new Inner2();
멤버 클래스
어디서든 사용 가능
로컬 클래스
메소드 내에서만 사용 가능
람다식
이름이 없는 익명 함수, 자바 1.8이상부터 사용 가능
(매개변수...) -> {
}
함수적 인터페이스
추상 메소드가 하나만 존재하는 인터페이스
- 매개변수가 하나인 추상 메소드는 () 괄호를 생략할 수 있다
- 매개변수가 없는 추상 메소드는 괄호 생략 불가능
- 실행문이 한 줄인 경우 중괄호 {} 를 생략할 수 있다
프로세스
실행 중인 프로그램
스레드
프로세스 내에서 독립적으로 실행되는 프로그램
스레드 생성 방법
(1) Thread 클래스 상속
extends Thread
(2) Runnable 인터페이스 구현; 보통 이 방식을 많이 사용한다
Runnable은 추상 메서드가 한 개만 존재하기 때문에 run() 메소드를 재정의 해줘야 한다
implements Runnable
Author And Source
이 문제에 관하여([Java]활용 5~12강 까지의 내용 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bacccine/Java활용-512강-까지의-내용-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)