1. 스트림이란 컬렉션 및 배열의 요소를 표준화된 방법으로 반복 처리하기 위해서 자바 8부터 제공하는 기능이다. 기존에는 for문, for-each문 또는 Iterator객체를 얻어 사용하였다면, 지금부터는 Stream객체를 얻어 좀 더 효율적으로 사용할 수 있다. import java.util.*; import java.util.stream.*; public class StreamEx { public static void main(String[] args) { List list = new ArrayList(); for (int i = 1; i System.out.print(i + " ")); } } 2. 스트림의 특징 1) 속도가 빠르고 병렬처리에 효율적이다. for문, for-each문보다 속도가 빠..
1. 람다식이란 자바 8부터 지원하는 기능으로 함수형 프로그래밍을 뜻하며, 함수를 정의하고, 함수를 데이터 처리부로 보내서 데이터를 처리하는 기법을 말한다. 쉽게 말해서 함수(자바에서는 메서드)를 간단한 식으로 표현하는 방법으로, 익명 함수라고도 한다. 2. 람다식의 형태 (매개변수) -> { 처리 내용} 3. 메서드로부터 람다식을 만드는 방법 메서드의 리턴 타입과 이름을 지우고 매개변수와 구현부 사이에 화살표를 넣어주면 된다. 간단한 예 // 메서드 사용 public int max(int a , int b){ return a > b ? a : b; } // 접근제어자, 리턴 타입, 메서드 명을 지우고 매개변수와 구현부 사이에 화살표를 넣어준다. // 람다식 사용 (a, b) -> { a > b ? a ..
1. 어노테이션(annotation)이란 공부를 하다보면 @Controller, @Getter와 같은 것을 본 적이 있을텐데 @로 시작되는 요소들을 어노테이션이라고 한다. 클래스, 인터페이스를 컴파일할 때 어떻게 처리해야 할 지를 알려주는 정보이다. 2. 어노테이션의 용도 컴파일 시 사용하는 정보 전달(예 : @Override) 빌드 툴(maven, gradle 등)이 코드를 자동으로 생성할 때 사용하는 정보 전달 실행할 때 특정한 기능을 처리할 때 사용하는 정보 전달 3. 어노테이션 사용하기 1) 어노테이션 정의하기 인터페이스를 정의하는 것과 비슷하며 속성을 가질 수 있다. public @interface print{ String value(); // 속성은 타입과 이름으로 되어 있으며, 괄호를 붙인다..
1. 쓰레드란 프레세스의 자원을 이용하여 질제 작업을 수행하는 것을 말한다. 1) 프로세스란 운영체제는 실행 중인 프로그램을 프로세스로 관리를 하는데 프로세스는 프로그램을 수행하는 데 필요한 데이터, 메모리와 같은 자원 + 쓰레드로 구성된다. 모든 프로세스는 최소 하나 이상의 쓰레드가 존재하며 프로세스가 가질 수 있는 쓰레드의 수는 제한이 없다. 하지만 하나의 쓰레드는 하나의 작업 공간(메모리 : 호출스택)을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 수 있는 쓰레드의 수가 결정된다. 2. 멀티쓰레드 1) 멀티 프로세스와 멀티 쓰레드 그림과 같이 멀티 프로세스들은 서로 독립적이다. 따라서 하나의 프로세스에서 발생한 오류가 다른 프로세스에 영향을 미치지 않는다. 하지만 멀티 쓰레드의 경우 한..
1. 열거형(열거타입, Enum)이란 한정된 값을 갖는 타입으로 서로 관련된 상수를 편리하게 선언, 사용하기 위한 것이다. 타입에 안전한 열거형 : 실제 값이 같아도 타입이 다르면 컴파일 에러가 발생한다. 2. 메서드 3. 열거형 정의 및 사용하기 1) 열거형 정의 public enum [열거형 이름] { 상수1, 상수2, 상수3 }; * IDE를 사용할 때, 아래와 같이 Enum을 선택해서 생성해 준다. 열거형 상수의 값이 불연속적일 경우 ()를 통해 값 설정 가능하다. 열거형 상수간 == 비교는 사용 가능하지만 비교는 불가능하다. → compareTo() 사용하여 비교 2) 열거형 사용하기 public enum Week { SUNDAY(1), MONDAY(2), TUESDAY(3), WEDNESDAY..
1. 제네릭란 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 파라미터를 결정되지 않은 타입으로 처리하고 실제 사용할 때(컴파일 시) 파라미터를 구체적인 타입으로 대체시키는 기능 우리가 컬렉션 프레임워크를 쓸 때 봤던 ''안에 타입을 지정하는 것이 제네릭이다. ''안에는 모든 알파벳이 들어갈 수 있지만 의미 있는 문자를 사용하는 것이 좋다. T : Type E : Element K : Key V : Value // Box class public class Box{ public T content; // Box클래스에서 결정되지 않는 content의 타입을 T라는 타입 파라미터로 정의 void setContent(T content){ this.content = content; } T getConten..
Object : 객체, Arrays : 배열, Collections : 컬렉션에 관한 유용한 static 메서드들을 제공한다. 1. Arrays Arrays클래스에는 배열을 다루는데 필요한 메서드들이 정의되어 있다. 1) 복사 copyOf() : 배열 전체를 복사하여 새로운 배열을 만들어서 반환한다. copyOfRange() : 배열의 일부(지정된 범위)를 복사하여 새로운 배열을 만들어서 반환한다. 2) 채우기 fill(), setAll() : 배열의 모든 요소를 지정된 값으로 채운다. 3) 정렬 sort() : 배열을 오름차순으로 정렬한다. 4) 검색 binarySearch() : 배열에 저장된 요소들 중 지정된 값이 저장된 위치(index)를 찾아서 반환한다. 단, 정렬이 된 상태에서 사용해야 올바른..
컬렉션을 정렬하는데 필요한 메서드를 정의한 인터페이스이다. 1. Comparable(java.lang) 기본 정렬 기준을 구현하는데 사용한다. 파라미터로 들어온 객체와 자신을 비교한다. Comparable을 구현한 클래스들은 오름차순으로 정렬이 가능하다는 것을 의미 Comparable을 구현한 클래스들 : Wrapper클래스, String, Date, File등 TreeSet과 TreeMap에 저장되는 객체(혹은 키)는 저장과 동시에 오름차순으로 정렬이 된다 이때 모든 객체가 정렬되는 것은 아니고 해당 객체가 Comparable을 구현하고 있어야 정렬이 가능하다. Integer, Double, String은 Comparable을 이미 구현하고 있기 때문에 우리가 그냥 사용해도 정렬이 되는 것이다. 1) ..