프로그래밍언어/Java (11) 썸네일형 리스트형 자바 쓰레드 1. 자바 쓰레드 생성하는 방법 - Thread 클래스 상속 - Runnable 인터페이스 구현 2. 구현하기 Thread 객체를 상속받아 병렬처리 구현하기 import java.util.ArrayList; class MyThread1 extends Thread { public MyThread1(String threadName) { super(threadName); } public void run() { for (int i = 0; i < 100; i++) { System.out.println(this.getName() + " : " + i); } System.out.println(); } } public class ThreadTest1 { public static void main(String[] ar.. [Java Collection Framework] HashMap, HashTable, Map 1. 해싱이란? - (알고리즘) 해시 함수는 데이터를 고정된 크기의 해시값, 코드로 변환한다. - (자료구조) 해시 함수를 활용해 데이터를 저장하고 빠르게 검색한다. (상수시간) - 해시충돌 : 다른 입력값이 동일한 해시값을 가지는 것을 의미한다. - 해시충돌 방지 (개방 주소법) : 충돌이 발생하는 경우 다른 버킷에 데이터를 저장한다. - 해시충돌 방지 (체이닝) : 각 버킷이 연결리스트의 헤더를 가지고 충돌이 발생하면 다음 연결 리스트에 데이터를 저장한다. 2. Java HashMap - Key:Value 쌍을 구조로 데이터를 저장 및 조회하는 자료구조 - Key:Value 쌍의 개수에 따라 동적으로 크기가 증가하는 Associate Array - 해시 충돌 방지를 위해 체이닝 기법을 사용한다. - .. Java Lambda Expression, 자바8 람다식 1996년 자바는 Generics 등장 직후 Lambda Expression을 보여주었다. 람다 표현식(람다식)으로 자바는 함수형 언어의 특징을 갖추게 되었다. 람다식은 1930년대 알론조 처치의 람다 대수식으로부터 그 뿌리를 두고 있다. 람다식을 사용하면 코드가 간결해지고 지연 연산 등을 통해 성능을 향상시킬 수 있다. 하지만 모든 엘리먼트를 순회하는 경우 성능이 떨어지고 코드 분석이 어려워지는 단점이 있다. 자바는 객체지향언어이기 때문에 아래 함수를 사용하기 위해서는 클래스를 만들고 그 안에 메서드를 작성한 뒤 객체를 생성해야 한다. static으로 객체를 생성하지 않고도 실행할 수 있으나 보질적으로 클래스를 정의해야만 한다. public int sum(int a, int b) { return a +.. Java Collection Framework (JCF) JCF는 인터페이스, 클래스, 알고리즘으로 구성되어 있습니다. 인터페이스 Collection, List, Set, Queue, Map 클래스 ArrayList, LinkedList, HashSet, HashMap, ... 알고리즘 정렬, 검색, 반복, 필터링 메소드 인터페이스 구현클래스 특징 Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합 데이터의 중복을 허용하지 않음. List LinkedList Vector ArrayList 순서가 있는 데이터의 집합 데이터의 중복을 허용 Queue LinkedList PriorityQueue List와 유사 Map Hashtable HashMap TreeMap 키와 값의 쌍으로 이루어진 데이터 집합 순서가 유지되지 않으 키는 중복이 허용되지 .. 람다식 0. 개요 - 자바는 OOP 언어이다. - 빅데이터 처리의 요구가 늘어나며 함수형 언어의 기능에대한 필요성이 증대했다. 1. 람다식이란 - 함수(메서드)를 간단한 식으로 표현하는 익명함수 - 익명함수란 이름이 없는 함수이다. - 함수와 메서드는 근본적으로 동일하나 함수는 일바적 용어인 반면 메서드는 객체지향 개념의 용어이다. - 함수는 클래스에 독립적이나, 메서드는 클래스에 종속적이다. 자바의 모든 함수는 클래스 내에서 선언되므로 모든 함수는 메서드라 지칭한다. // 메서드 int max(int a, int b) { return a > b ? a : b; } // 람다식 (a, b) -> a > b ? a : b; 2. 람다식의 특징 - 메서드의 이름과 반환타입을 제거하고 화살표(->)를 블록 앞에 추가.. 가변객체와 불변객체 0. 자바의 객체 자바의 클래스는 extends 키워드롤 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속한다. 따라서 모든 자바의 클래스는 Object 클래스의 자식 혹은 자손 클래스이며 Object 클래스는 최상위 부모 클래스에 해당된다. Object 클래스는 메소드로만 구성되며 모든 클래스가 이를 상속 받는다. 메소드 오버라이딩을 통해 Object 클래스의 메소드들을 재정의해 활용한다. - equals() : 두 객체를 비교하고 동일한 객체이면 true, 그렇지 않으면 false를 반환한다. - hashcode() : 객체를 식별할 하나의 정수값을 반환합니다. 컬렉션의 HashSet, HashMap, Hashtable의 객체 동등성 비교에 활용됩니다. - toSt.. 자바 어노테이션 0. 어노테이션이란? - 어노테이션은 JDK1.5 이후 등장하였으며 크래스, 메소드, 변수에 @을 사용하여 컴파일 과정 혹은 실행 과정에 코드를 어떻게 처리할지 알려주기 위한 메타 데이터의 일종입니다. - 과거 자바 코드는 설정 파일과 분리되어 있어 개발의 어려움과 업데이트 문제가 있었습니다. 이를 하나의 파일로 코드와 설저을 관리하기위해 어노테이션기능이 추가되었습니다. 1. 어노테이션 용도 - 컴파일러에 문법 에러를 체크하도록 정보를 제공한다. - 소프트웨어 개발툴에 적용할 빌드, 배치 시 코드를 자동 생성할 정보를 제공한다. - 런타임 시 특정 기능을 실행할 정보를 제공한다. 2. 어노테이션 종류 - 표준 어노테이션(java.lang, java.lang.annotaion) : 자바에 내장된 어노테이션.. [Java] Optional이 모길래??? 0. 개요 Optional 클래스는 Java8 부터 지원하고 있습니다. 1. Optional 등장 배경 개발을 할 때 가장 많이 발생하는 예외 중 하나가 NPE 입니다. NPE를 피하기위해 null 여부 겁사를 해줘야 하는데 null 검사를 해야 하는 변수가 많아지면 코드가 복잡해지고 번거로워집니다. 그래서 null 대신 초기 값을 사용하길 권장하기도 합니다. 이러한 연유로 Java 8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있습니다. Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로서 참조하더라도 NPE가 발생하지 않도록 도와줍니다. 아래와 같이 Optional 클래스는 value에 값을 저장하기 때문에 값이 null 임에도 바로 NPE가 발생하지 않으며 클.. 이전 1 2 다음 목록 더보기