목록공부/JAVA (41)
랩터
https://github.com/Lifesheep1/java-collection-practice-0704.git
https://github.com/Lifesheep1/java-stream-practice-0710.git GitHub - Lifesheep1/java-stream-practice-0710Contribute to Lifesheep1/java-stream-practice-0710 development by creating an account on GitHub.github.com
자바는 C++처럼 객체지향 프로그래밍이 가능하면서도, 운영체제로부터 독립되어 있으므로, 자바로 소스 코드를 한 번만 작성하면 어떤 운영체제에서도 코드를 수정할 필요 없이 프로그램을 실행시킬 수 있습니다. 이와 같은 운영체제로부터의 독립성은 JVM이라는 별도의 프로그램을 통해서 구현됩니다.학습 목표JVM이 무엇인지 이해한다.JVM의 메모리 구조를 개괄적으로 이해한다.가비지 컬렉션이 무엇인지 이해한다.JVM이란?JVM(Java Virtual Machine)은 자바 프로그램을 실행시키는 도구입니다. 즉 JVM은 자바로 작성한 소스 코드를 해석해 실행하는 별도의 프로그램입니다. JVM은 자바 프로그램과 운영체제 사이에서 일종의 통역가 역할을 수행합니다. JVM 구조 JVM의 내부 구조 그림입니다. 자바로 소스..
어떤 애플리케이션이 실행되면 운영체제가 해당 애플리케이션에 메모리를 할당해 주며 애플리케이션이 실행되는데, 이처럼 실행 중인 애플리케이션을 프로세스라고 합니다. 그리고, 프로세스 내에서 실행되는 소스 코드의 실행 흐름을 스레드라고 합니다.단 하나의 스레드를 가지는 프로세스를 싱글 스레드 프로세스, 여러 개의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 합니다. 어떤 프로세스가 멀티 스레드로 동작한다는 것은 해당 애플리케이션이 동시 작업을 할 수 있다는 것을 의미합니다. 즉, 여러 코드를 각 스레드에 분배하여 동시에 실행시킬 수 있는 것이죠. 지금까지 우리가 봐왔던 코드들은 싱글 스레드코드입니다. 이번에는 멀티스레드를 활용할 수 있게 스레드를 생성하고 실행하는 배워보겠습니다. 학습 목표스레드가 무엇..
파일 입출력을 정리해보겠습니다. 학습 목표바이트 기반 스트림의 간단한 입출력 코드를 이해하고 활용합니다.문자 기반 스트림의 간단한 입출력 코드를 이해하고 활용합니다.파일 클래스를 이해하고 활용합니다. InputStream, OutputStream자바에서는 입출력을 다루기 위한 InputStream, OutputStream을 제공합니다. 가장 많이사용되는 FileInputStream과 FileOutputStream을 살펴보겠습니다. FileInputStream터미널에 echo code >> java.txt를 입력하면, code라는 문자열이 입력된 java.txt라는 파일을 생성합니다. import java.io.BufferedInputStream;import java.io.FileInputStream;pu..
Optional은 NullPointerException(NPE), 즉 null값으로 인해 에러가 발생하는 현상을 객체 차원에서 효율적으로 방지하고자 도입되었습니다. 연산 결과를 Optional에 담아서 반환하면, 따로 조건문을 작성해주지 않아도 NPE가 발생하지 않도록 코드를 작성할 수 있습니다. OptionalOptional 클래스는 모든 타입의 객체를 담을 수 있는 래퍼클래스입니다. package Stream;import java.util.Arrays;import java.util.List;import java.util.Optional;public final class OptionalExample { public static void main(String[] args) { List ..
forEach()메서드는 대표적인 최종 연산자입니다.스트림에는 forEach() 메서드 외에도 다양한 최종 연산자들이 존재합니다.기본 집계(sum() , count() , average(), max() , min())숫자와 관련된 기본적인 집계의 경우에는 대부분 최종 연산자라고 생각해도 됩니다. package Stream;import java.util.Arrays;import java.util.OptionalDouble;public class TerminalOperationExample { public static void main(String[] args) { //int형 배열 생성 int[] intArray = {1, 2, 3, 4, 5}; //카운팅 ..
전체적인 코드 구조를 파악해 보도록 하겠습니다. 중간연산에서 가장 많이 사용되는 필터링,매핑,정렬 등에 대해 살펴보겠습니다. 필터링(filter() , distinct() )필터링은 이름 그대로 우리의 필요에 따라 조건에 맞는 데이터들만을 정제하는 역할을 하는 중간 연산자를 가리킵니다. distinct() : Stream의 요소들에 중복된 데이터가 존재하는 경우, 중복을 제거하기 위해 사용합니다.filter(): Stream에서 조건에 맞는 데이터만을 정제하여 더 작은 컬렉션을 만들어냅니다. filter()메서드에는 매개값으로 조건을 주고, 조건이 참이 되는 요소만 필터링합니다. 여기서 조건은 람다식을 사용하여 정의할 수 있습니다. package Stream;import java.util.Arrays..
스트림으로 데이터를 처리하기 위해서는 가장 먼저 스트림을 생성해야 합니다. 많이 쓰이는 배열,컬렉션,임의의 수로 스트림을 생성하는법을 알아보겠습니다. 배열 스트림 생성 package Stream;import java.util.Arrays;import java.util.stream.Stream;public class StreamCreator { public static void main(String[] args) { //문자열 배열 선언 및 할당 String[] arr = new String[]{"김코딩", "이자바", "박해커"}; //문자열 스트림 생성 by Arrays.stream()// Stream stream = Arrays.stream(ar..
스트림(Stream)은 배열, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자입니다. 학습 목표스트림의 핵심적인 개념과 특징을 이해할 수 있다.스트림의 생성, 중간 연산, 최종 연산의 세 단계로 구성된 스트림 파이프라인을 이해하고 활용할 수 있다.스트림의 주요 메서드를 활용해 원하는 데이터 처리를 할 수 있다. 스트림의 핵심 개념과 특징자바에서의 스트림은 “데이터의 흐름”을 의미합니다. 좀 더 구체적으로, 각 데이터를 흐름에 따라 우리가 원하는 결과로 가공하고 처리하는 일련의 과정과 관련이 있습니다. 스트림(Stream)의 도입 배경for문과 Iterator를 사용하는 경우, 코드가 길고 복잡해 질 수 있습니다.Iterator를 사용한 반복 처리package Stream;..