일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- post
- docker
- gradle
- 소켓
- STREAM
- 액세스회선
- 라우터
- Collection
- 허브
- mybatis
- sonarQube
- container
- Pipeline
- Spring
- tomcat
- 캐시서버
- cloud
- Linux
- Jenkins
- LAN어댑터
- ansible
- DevOps
- map
- IntelliJ
- JPA
- AOP
- Java
- jdk
- Set
- 방화벽
- Today
- Total
목록프로그래밍 언어/JAVA (13)
거북이-https://velog.io/@violet_evgadn 이전완료
최종 처리 메서드 종류 수집 최종 처리 메서드의 꽃이라고 할 수 있다. 지금까지 Stream으로 처리한 데이터들은 최종 처리 메서드를 통해 결과 출력만 수행하였다. 하지만 현실에서 코드를 사용할 때는 출력문으로 결과를 출력하는 상황보다는 데이터들을 Collection이나 Array에 담아 사용자에게 반환하는 경우가 대부분이다. 따라서 Stream에서도 중간 메서드들을 통해 처리된 데이터들을 Collection이나 배열, 혹은 원하는 Container로 담아주는 메서드가 필요하고 이것이 "수집 최종 처리 메서드"이다. 대표적인 수집 메서드는 "collect()"이며 collect에 전달하는 Parameter를 다르게 하여 어떤 Container에 Stream 데이터를 수집할지 결정할 수 있다. Collec..
최종 처리 메서드 종류 루핑 ◎ forEach 중간 처리 메서드 Section에서 peek()을 설명하며 비교군으로 많이 활용했던 구문이다. forEach()의 리턴 타입이 void인 만큼 forEach는 Stream의 데이터를 변경하는 등의 특수한 역할을 수행할 수는 없다. forEach() 구문은 주로 Stream에 저장된 모든 요소를 출력하는 용도로 활용된다. peek()을 배우며 많이 활용해봤으니 예시 코드는 생략하겠다. 매칭 매칭은 최종 처리 단계에서 Stream에 담긴 값들이 특정 조건을 만족하는지 조사하는 메서드이다. 중간 단계 메서드 중 filter()와 비슷하다고 생각할 수 있지만 조금 다른 성격을 띤다. filter()는 중간 단계에서 로직을 수행하며 "모든 데이터 중 원하는 데이터만 ..
중간 처리 메서드 종류 왜인지는 모르겠는데 티스토리에서 표를 작성하면 깨지는 경우가 있어서 Excel로 표를 만들어 스크린샷을 찍었다. (생각보다 티스토리가 순정으로 활용하기엔 안 좋은 것 같은...) 필터링 필터링은 "Filter"라는 말에서 알 수 있듯 Stream에 저장된 수많은 데이터 중 원하는 데이터만 걸러내는 역할을 수행한다. ◎ distinct() 중복을 제거하는 메서드이다. Stream은 Object.equals(Object B)가 true를 반환할 때 Object와 Object B를 동일한 객체로 판단하는데 Set에서 짧게 설명했듯 자바에서는 equals() 메서드를 수행하기 전 두 Object의 Hashcode 값 일치 여부를 먼저 검사하기 때문에 hashCode() 값 또한 일치해야 ..
Stream 종류 Stream Interface는 BaseStream이라는 Interface를 상속받아 Stream 역할을 수행한다. BaseStream Interface를 상속받는 Interface는 Stream 뿐만 아니라 IntStream, LongStream, DoubleStream이 존재한다. IntStream은 int 데이터만 들어갈 수 있으며, LongStream은 long 데이터, DoubleStream에는 double 데이터만 들어갈 수 있다. 객체 Stream를 선언할 때 T에는 오직 Class 자료형만 들어갈 수 있으므로 T에 int, long, double이 들어갈 수가 없다. 따라서 T에 int, long, double이 들어가야 하는 상황을 대처하기 위하여 IntStream, L..
Java 8에 추가된 내용 & Java Stream이 강조되는 이유 Java LTS 버전 중 하나인 Java8에 추가된 대표적인 내용은 아래와 같다. Lambda(람다) : 마치 함수처럼 코드를 작성하는 함수형 프로그래밍 언어에서 사용되는 개념으로 메서드에 이름이 없어 익명 함수라고도 부름 Optional : Null이 될 수 있는 객체를 담는 클래스 메소드 레퍼런스 : Lambda의 축약 표현. 아래와 같이 사용 가능 클래스 이름::메소드 이름 (예시) list.forEach(System.out::println) 생성자::new (예시) list.stream().map(Integer::new) Stream : Collection이나 배열에 저장된 요소를 람다식(Lambda Expression)이나 메소..
※ 이전에 설명했던 Collection 공통 함수 이외 Class에만 존재하는 특별한 함수들만 기입했다 List ◎ List Interface란? List는 "중복을 허용하며 순서가 존재하는 Collection"을 의미한다. List는 순서가 존재하는 Collection이기 때문에 Collection 중에는 유일하게 Index가 존재하며, 객체에 접근할 때 Index로 접근할 수도 있다. List는 Collection에 객체 그 자체를 저장하는 것이 아닌 객체 주솟값을 저장한다. 따라서 동일한 객체가 다른 Index에 들어가 있다 하더라도 Collection에는 같은 주솟값이 저장되어 있으므로 1개 Index의 데이터에 변형을 가할 경우 다른 Index의 데이터에도 영향을 끼칠 수 있다. 예시를 통해 알..
Collection이란? "자료구조"라는 말을 많이 들어 봤을 것이다. Wikipedia 기준 자료구조란 아래와 같은 의미를 가진다. 컴퓨터 과학에서 (데이터에) 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 이를 해석하면 "자료구조"란 자료 그 자체, 다른 자료와의 관계, 그리고 자료를 처리할 수 있는 명령들을 모두 포함하고 있는 개념인 것이다. Collection도 자료 구조의 일종인데, "여러 원소들을 담을 수 있는 자료구조"를 의미한다. 더욱 정확히 말하자면 다수의 데이터를 저장 및 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 Fra..
자바 프로그램 구조 ◎ 클래스 JAVA의 모든 프로그램 소스는 클래스 단위로 시작한다. 일반적으로 클래스 이름과 소스파일명은 동일하며, 실행을 위해서는 main() 메서드가 필요하다. 객체(인스턴스) 설계도를 담당한다. 클래스를 선언하고 인스턴스를 만들면 클래스 형태를 가진 인스턴스가 만들어지는 것이다 ◎ 인스턴스 클래스의 형태로 생성된 객체이다. 클래스가 설계도라면 인스턴스는 실제 목자재 등의 재료로써 이런 인스턴스들을 쌓아서 전체 프로그램을 구성하게 된다. 인스턴스의 목적은 멤버 변수를 통한 정보 보관 및 멤버 메서드를 통한 행위이다. 인스턴스의 주솟값을 레퍼런스라고 하며, 레퍼런스 값을 저장한 변수를 레퍼런스 변수라고 한다. ◎ 예시를 통해서 본 클래스와 인스턴스 class Class_Example..
Garbage Collection이란? ◎ GC(Garbage Collection) 시작하기 이전에 말했던 내용을 간단히 정리하면, GC란 "메모리를 알아서 정리해주는 기능"이라고 한다. 그렇다면 왜 Garbage Collection이라고 하는 걸까? 먼저 "Garbage"라는 용어에 대해 알아볼 필요가 있다. Garbage의 사전적 의미는 "쓰레기"라는 의미를 가진다. 그렇다면, 컴퓨터 과학 측면에서 Garbage라는 의미는 무엇을 의미할까? ◎ Garbage(쓰레기 값)이란? Garbage를 한 마디로 정의하자면, "유효하지 않은 메모리 주소"를 말한다. Garbage를 Unreachable Object(사용하지 않을 객체)라고 정의하는 사람들도 있지만, 사용을 하고 싶더라도 메모리 주소를 잘못 설정..
JVM 구조 ◎ Class Loader(클래스 로더) JVM에 클래스 파일(.class)을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. Class Loader에서는 클래스 로딩(Loading), 링크(Linking), 초기화(Initalization) 순으로 클래스 파일을 메모리에 할당한다. 먼저 클래스 로딩은 클래스를 읽어오는 과정이다. 클래스 로더가 .class 파일을 읽고 내용에 맞는 Binary 데이터를 생성하여 Method 영역에 저장한다. 이후 링크 과정에선 heap 영역에 저장된 객체를 가지고 오는 과정을 수행한다. 예를 들어 Book 클래스의 객체를 생성할 때, Method 영역에서 Book 클래스에 대한 정보를 가지고 와 클래스 정적 변수에 대한 값을 초기화한다. 이렇게 만..