[Java]활용 5~12강 까지의 내용 정리

bacccine·2022년 4월 20일
0

Java

목록 보기
6/7

컬렉션 프레임워크부터 스레드까지

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

0개의 댓글