자바8
-
Java8. parallelSortBackEnd/Java 2022. 1. 25. 22:44
Arrays.parallelSort(): Fort/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공합니다. 병렬 정렬 알고리즘은 배열을 둘로 계속 쪼개고 합치면서 정렬합니다. import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class ParallelSortClass { public static void main(String[] args) { // 정렬하는 배열의 크기에 따라 결과는 달라질 수 있습니다. int size = 1500; int[] numbers = new int[size]; Random random = new Random(); IntStream.range(0, ..
-
Java8. OptionalBackEnd/Java 2022. 1. 22. 08:13
Optional은 비어있을 수도 있고, 오직 값 한개가 들어있을 수도 있는 컨테이너 인스턴스입니다. 메소드 매개변수 타입, 맵의 키 타입, 인스턴스 필드 타입으로도 사용이 가능하지만 리턴값으로만 사용하도록 권장합니다. 프리미티브 타입용 Optional(OptionalInt, OptionalLong 등)은 따로 존재하며, Collection, Map, Stream, Array, Optional은 자체적으로 비어있는 것을 확인할 수 있기 때문에 Optional로 감싸지 않습니다. Person과 Info 도메인이 존재할 때 아래와 같이 호출을 하게 되면 NullPointerException이 발생합니다. public class Person { private int age; private String name;..
-
Java8. 스트림 (Stream)BackEnd/Java 2022. 1. 22. 06:29
스트림(Stream)이란 순차 또는 병렬 집계 작업을 지원하는 오퍼레이션들의 모음입니다(Sequence of elements supporting sequential and parallel aggregate operations). 스트림의 특징 데이터를 담고 있는 저장소(Collection)가 아닙니다. Functional in nature, 스트림이 처리하는 데이터 소스를 변경하지 않습니다. 스트림으로 처리하는 데이터는 오직 한 번만 처리됩니다. 무제한일 수도 있습니다. (Short Circuit 메소드를 사용해서 제한할 수 있습니다.) 중개 오퍼레이션은 근본적으로 lazy 합니다. (lazy하다는 것은 종료 오퍼레이션이 오기 전까지 실행되지 않는 것을 의미합니다.) 손쉽게 병렬 처리할 수 있습니다. (..
-
Java8. 기본 메소드 (Default Method)와 스태틱 메소드 (Static Method)BackEnd/Java 2022. 1. 22. 04:10
기본 메소드 (Default Method) 기본 메소드란 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법으로 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있습니다. 단, Object가 제공하는 기능 (equals, hashCode)는 기본 메소드로 제공할 수 없습니다. 아래 Default 인터페이스와 Default 인터페이스를 구현한 DefaultClass가 있습니다. public class Application { public static void main(String[] args) { Default defaultClass = new DefaultClass(); defaultClass.printJava(); } } public interface Default { voi..
-
Java8. 메소드 레퍼런스 (Method Reference)BackEnd/Java 2022. 1. 20. 23:27
메소드 레퍼런스(Method Reference)란 ::를 사용하여 축약하는 방법입니다. 메소드 참조 방법 Static Method 참조 특정 객체 Instance Method 참조 생성자 참조 임의 객체 Instance Method 참조 메소드 또는 생성자의 매개변수로 람다의 입력 값을 받으며, 리턴 값 또는 생성한 객체는 람다의 리턴 값입니다. public class Hello { private String name; public Hello() {} public Hello(String name) { this.name = name; } public String print(String name) { return "Hello, " + name; } public String printName() { retur..