[Java] 컬렉션 프레임워크 (List, Set, Map)
·
Java/Base
컬렉션 프레임워크 (Collection Framework)  - 데이터를 표현/조작하는 데 사용되는 클래스와 인터페이스들의 집합  - 프로그램 구현에 필요한 자료 구조를 구현해 놓은 JDK 라이브러리  - 개발에 소요된 시간을 절약하면서 최적화된 알고리즘을 사용할 수 있음  - 데이터를 저장하는 여러 가지 방법을 제공함  List 계열 인터페이스  - 객체를 순서에 따라 저장함 (인덱스로 접근 가능)  - 중복 값 가능 ArrayList 클래스// 타입 미설정 시 (Object로 선언)ArrayList 리스트명 = new ArrayList();// 타입 설정 시 (제네릭 사용)ArrayList 리스트명 = new ArrayList(); // ex) 정수 자료형이 들어가는 ArrayList // Array..
[Java] 자료 구조
·
Java/Base
자료 구조 (Data Structure)  - 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법  - 성능 좋은 알고리즘의 기반 : 효율적인 자료 구조  - 자료의 효율적인 관리는 프로그램의 수행 속도와 밀접한 관련이 있음  - 프로그램에 맞는 최적의 자료 구조를 활용해야 함      → 여러 자료 구조에 대한 이해 중요  선형 자료 구조  - 한 줄로 자료를 관리하는 자료 구조 #  배열 (Array)  - 정해진 크기의 메모리를 먼저 할당받아 사용해야 함      : 값자료형[] 배열명 = new 값자료형[크기];  - 자료의 물리적 위치와 논리적 위치가 같음 #  연결 리스트 (LinkedList)  - 자료가 추가될 때마다 메모리를 할당받음  - 자료는 링크로 연결됨  - ..
[Java] Thread - 은행 계좌 입출금에 대한 동기화 기능 구현
·
Java/Base
코드#  클래스 파일 public class BankAccount { int money = 100_000; public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } // 입금 // synchronized 메서드 public synchronized void saveMoney(int money) { int currentMoney = getMoney(); try { Thread.sleep(3000); } catch (InterruptedException e) { ..
[Java] 쓰레드 (Thread)
·
Java/Base
쓰레드 (Thread)  - 하나의 프로세스 안에서 실제 작업을 수행하는 작업 단위 (작업자)  - 각각 자신만의 작업 공간을 가짐 (Context 영역)  - 코드를 실행할 때 사용하는 main 함수는 '메인 쓰레드'임  - 쓰레드별로 작업 시간이 다를 수 있음#  프로세스 (Process)  - 프로그램이 실행되면 운영체제로부터 메모리를 할당받아, '프로세스 상태'가 됨  - 메모리를 할당받아 실행되고 있는 프로그램  - 주기억장치에 올라간 상태  - 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있음  Thread의 상태 변화   - 작업을 잠깐 쉬면 'Not Runnable' 상태가 됨  - 작업이 완전히 종료되면 'Dead' 상태가 됨 Thread의 기본 명령어#  쓰레드에게 작업을 시작하도록 ..
[Java] 제네릭 (Generic)
·
Java/Base
제네릭 프로그래밍  - 다양한 자료형이 적용될 수 있는 클래스를 만드는 것  - 선언 시 클래스의 자료형을 명시하지 않음      → 추후 해당 클래스를 인스턴스화(new)할 때 자료형이 정해짐 (.class 파일도 이 시점에 생성됨)      ⇒ 변수의 이름과 기능이 동일하면서, 자료형만 달라지는 변수들을 사용할 때 고려  - 컬렉션 프레임워크에서 많이 사용됨      : 알고리즘을 활용해서 보다 빠르게 자료 구조를 검색하고, 데이터를 삽입할 수 있는 프레임워크 #  장점  - 인스턴스화할 때, 다이아몬드 연산자() 사이에 자료형을 명시함      → 가독성을 높임  - 자료형을 잘못 사용했을 때, 컴파일 시점 오류가 발생함      → 자료형의 변환이 컴파일러에 의해 검증되므로, 안정성이 높음  - ..