JAVA
-
스트림 활용하기, 중간연산과 최종연산 #filter #map #findAny #reduceJAVA 2023. 3. 26. 15:53
스트림 활용하기, 중간연산과 최종연산 #filter #distinct #takeWhile #dropWhile #skip #limit #map #flatMap #anyMatch #allMatch #noneMatch #findAny #findFirst 안녕하세요? 장장스입니다. 오늘은 스트림 연산에 대해 정리해 보겠습니다. 1. 스트림 요소 필터링 filter 메서드 Stream filter(Predicate
-
자바 스트림 설명부터 사용하는 이유 파헤쳐보기 #JAVA #스트림JAVA 2023. 1. 29. 16:53
자바 스트림 설명부터 사용하는 이유 파헤쳐보기 #JAVA #스트림 안녕하세요? 장장스입니다. 오늘은 자바 스트림에 대해서 정리해 보겠습니다. 스트림(Stream)이란 무엇인가? 스트림(Stream)은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형(더 간결하고 가독성이 좋도록)으로 컬렉션 데이터를 처리할 수 있다. ※ JAVA Colletion Data의 상속구조 일단 스트림이 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 또한 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 예를 들어, Dish 클래스의 리스트 형태인(List) menu 리스트가 있을 때, 저칼로리 순서대로 음식명을 추출하고자 한다. //1. low 칼로리 음..
-
자바 람다 표현식 설명부터 사용법까지 완벽 정리 #JAVA #람다JAVA 2023. 1. 3. 00:20
자바 람다 표현식 설명부터 사용법까지 완벽 정리 #JAVA #람다 안녕하세요? 장장스입니다. 오늘은 자바 8에 추가된 람다에 대해 정리하겠습니다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트를 가질 수 있습니다. 람다의 특징을 하나씩 살펴보면, ▶ 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드가 줄어든다. ▶ 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. ▶ 전달 람다 표현식을 메서드 인수로 전달하거나..
-
[객체 지향 설계] SOLID 원칙JAVA 2021. 9. 1. 20:04
SOLID 원칙 안녕하세요? 장장스입니다. 오늘은 객체 지향 설계의 기본 원칙으로 알려져 있는 SOLID 원칙에 대해 정리해보겠습니다. [S] 단일 책임 원칙(SRP: single responsibility principle) 하나의 클래스는 하나의 기능만을 갖도록 구현한다. 즉, 어떤 클래스를 변경하는 이유는 하나이어야 한다. 한 클래스에서 여러 기능을 제공하게 되면 유지보수가 어렵다. [O] 개방-폐쇄 원칙 (OCP: open/closed principle) 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 인터페이스를 상속받아 구현하는 클래스는 여러개가 될 수 있다. (확장의 개념) 인터페이스가 변경되면 인터페이스를 상속받은 클래스는 변경이 필요하게 된다. (변경의 개념) 인터페이스나 추상클래스를 ..
-
[JAVA] 자바 가비지 컬렉션 , Java Garbage Collection #GCJAVA 2021. 7. 6. 23:35
자바 가비지 컬렉션 , Java Garbage Collection 안녕하세요? 장장스입니다. 자바의 GC에 대해 정리해보겠습니다. GC (Garbage Collection) 자바 어플리케이션은 JVM에 의해 구동이 됩니다. GC(Garbage Collection)는 JVM의 주요 기능으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 작업을 합니다. 자바의 GC(Garbage Collection)는 아주 단순한 규칙을 갖고 있습니다. Heap 영역의 오브젝트 중 stack 에서 도달 불가능한 (Unreachable) 오브젝트들은 가비지 컬렉션의 대상이 된다. 자바의 메모리 영역, heap public class Main { public static void main(String[] arg..
-
[JAVA] LinkedList를 접근 제어하는 ListIteratorJAVA 2021. 1. 24. 19:41
LinkedList를 접근 제어하는 ListIterator 안녕하세요? 장장스입니다. LinkedList를 사용할 때 유용한 ListLiterator에 대해 살펴보려고 합니다. JAVA의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스를 사용합니다. 그 중에서 Iterator 인터페이스를 상속받아 List 컬렉션에서 사용가능한 기능을 추가한 인터페이스가 바로 ListIterator 인터페이스입니다. listIterator 메소드 정리 메소드 설명 void add(E e) 해당 리스트(list)에 전달된 요소를 추가함. (선택적 기능) boolean hasNext() 이 리스트 반복자가 해당 리스트를 순방향으로 순회할 때 다음 요소를 가지고 있으면 true를 반환하고,..
-
[JAVA] DTO(VO) 리스트(list)를 특정 변수에 대해 정렬하기JAVA 2020. 12. 14. 23:02
DTO list 정렬하기, VO list 정렬하기 안녕하세요? 장장스입니다. 오늘은 DTO 혹은 VO 라고 부르기도 하죠? DTO(VO) List 정렬에 대한 포스팅입니다. 업무를 하다보면 가~끔 본인이 DTO를 특정 변수에 대해 정렬해야 할 때가 있습니다. 아주 간단하게 Stream을 사용하여 정렬할 수 있답니다. DTO(VO) 클래스 정의 다음과 같이 Student 클래스를 정의합니다. 이름, 수학점수, 영어점수를 기입할 거에요. public class Student { String name; int math; int english; //getter, setter public String getName() { return name; } public void setName(String name) { t..
-
[JAVA] Number 클래스와 Value 메서드JAVA 2020. 7. 13. 23:24
Number 클래스와 Value 메서드 안녕하세요? 장장스입니다. 자료형 자바에는 기본형(Primitive Type)과 참조형(Reference Type)이 있습니다. 일반적으로 다음과 같이 분류 할 수 있습니다. Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char) ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum Type ㄴ etc. 참조형은 Byte, Double, ..
-
[JAVA] SMTP 메일 이미지 첨부 방법 3가지JAVA 2020. 7. 4. 19:52
SMTP 메일 이미지 첨부 에러 자바로 메일을 보내야하는 일이 생겨 SMTP를 사용해 메일을 보내는 코드를 작성했다. 메일내에 이미지를 첨부해서 전송해야 했고 CID 방식을 사용해서 코드를 작성했다. 로컬에서의 테스트는 깔끔하게 네이버, 구글 등 전송받은 메일이 모두 정상적으로 출력이 되었으나 개발서버에서 테스트를 진행했을 때 일부 메일에서 정상적으로 작동이 되지 않는 일이 생겼다. 구글신의 도움을 받아 찾아본 결과 3가지의 방법이 있었다. Inline embedding 인라인 임베딩 방법은 이미지를 base64로 인코딩 하는 방법이다. 쉽게 말하면 이메일에 이미지를 문자열로 변환하여 HTML 태그를 통해 이메일에 이미지를 내장하는 방법이다. 굉장히 간단하지만 잘 사용하지는 않는다. 이메일 대략 이런식으..
-
[JAVA] 인터페이스 (interface)JAVA 2020. 7. 4. 19:12
JAVA interface 인터페이스(interface) 인터페이스는 클래스가 제공하는 기능을 명시적으로 선언하는 역할을 합니다. 인터페이스는 추상 메서드와 상수로만 이루어져 있습니다. 즉, 구현된 코드가 없기 때문에 당연히 인터페이스로 인스턴스(객체)를 생성할 수 없습니다. 그렇다면 왜 인터페이스를 사용하는 걸까요? 인터페이스를 만드는 이유? 인터페이스는 개발자에게 내가 만든 프로그램이 어떤 메서드를 제공할 건지 알려주는 설명서와 같은 역할을 합니다. 예를 들어 계산이 프로그램을 구현한 CalBase클래스가 있다고 해봅시다. 우리는 이 인터페이스클래스만 보고도 이 메서드가 어떤 매개변수를 요구하고 있으며 어떤 반환값을 요구하는지 알 수 있습니다! 전자정부 표준 프레임워크에서는 Service 패키지에서 ..