Java 12

[Java] Stream - 사용법

개요2026.02.10-[Java] Stream 개념에서 Java의 Stream 개념에 대해 알아보았다. 이번 글에서는 실제로 어떻게 사용하는지에 초점을 맞춰서 내용을 정리해 본다. 생성Stream은 데이터 집합인 컬렉션, 다시 말해 Array, List, Set, Map 등으로부터 생성할 수 있다. 컬렉션이 제공하는 stream 메서드를 사용해 Stream을 생성한다.List list = new ArrayList();list.add("Apple");list.add("Banana");list.add("Kiwi");Stream stream = list.stream(); 또는 Stream에서 제공하는 generate, iterate 메서드 등을 사용해서 생성하는 것도 가능한다. generate는 무한한 값..

Java 2026.02.24

[Java] Stream 개념

개요최근 기본적인 반복문과 조건문을 활용한 Java 코드를 AI에게 개선해달라 요청했더니 Stream이라는 개념을 가진 코드를 제안해주었다. 사용하고 유지보수를 하기 위해서는 관련 개념을 이해하고 있어야 할 것 같아 정리해보려고 한다. Stream프로그래밍 개발에서 Stream이란 '일련의 데이터 흐름'을 의미한다. 위키피디아의 경우에는 시간 상에 나타나는 일련의 데이터 요소로 정의하며 연속적인 데이터 흐름에 초점을 맞추고 있다.Java의 Stream은 이러한 데이터 흐름을 표준화된 방법으로 쉽게 처리할 수 있도록 지원하는 클래스 집합이다. 경우에 따라, 요소의 Stream에 함수형 연산을 지원하는 클래스라 정의하기도 한다. 다시 말해 Java Stream을 이용하여 데이터를 함수형 연산을 통해 표준화..

Java 2026.02.23

[Java] HashSet

개요2026.02.06-[Java] HashMap에서 HashMap에 대해서 살펴보았는데, 이번 글에서는 Set을 구현한 HashSet에 대해서 살펴본다. HashSet이름에서 추측할 수 있듯, HashSet은 Set 인터페이스를 구현한 클래스이다. 객체를 중복 저장할 수 없고 저장 순서를 유지하지 않는다는 Set의 성질을 그대로 이어받는다. 만약 순서를 유지해야 하거나 자동 정렬이 필요한 경우에는 LinkedHashSet, TreeSet과 같은 다른 구현 클래스를 사용하면 된다.Set은 중복을 허용하지 않기 때문에 보통 중복을 제거하기 위해 많이 활용한다. 또한 비선형 구조로 인덱스가 존재하지 않기 때문에 값을 추가하거나 삭제할 때에는 Set에 값이 있는지 확인할 필요가 있기 때문에 List에 비해 ..

Java 2026.02.13

[Java] HashMap

개요개발하고 있는 Java 애플리케이션에서 HashMap을 사용하는데, Java를 놓은지 오래 되었다보니 기본 개념만 겨우 기억하고 있다. 개발 진행에 필요한 개념을 다시 돌아보자. HashMapMap 인터페이스를 구현한 대표적인 Map 컬렉션이다. Map 인터페이스를 상속하고 있어 키와 값으로 구성된 Entry 객체를 저장하는 구조라는 Map의 성질를 그대로 갖고 있다. 키와 값은 모두 객체이며, 값은 중복을 허용하지만 키는 허용하지 않는다. 특히 HashMap의 경우에는 Hashing을 사용해 많은 양의 데이터를 검색하는 성능이 뛰어나다.내부에 키와 값을 저장하는 자료 구조를 가지며, 해시 함수를 통해 키, 값이 저장되는 위치를 결정하므로 사용자는 그 위치를 알 수 없다. 또한 삽입 순서와 저장 ..

Java 2026.02.12

[Maven] java.lang.IllegalStateException: Unable to load cache item

현상Ubuntu 서버에서 maven을 설치하여 Java 애플리케이션을 빌드하던 중 아래와 같은 에러가 발생하면서 실패했다.[ERROR] Error executing Maven.[ERROR] java.lang.IllegalStateException: Unable to load cache item[ERROR] Caused by: Unable to load cache item[ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper[ERROR] Caused by: Exception com.google.in..

Java 2024.06.27

[Java] 가변 인자 (varargs)

가변 인자 (Variable argument) 매개변수의 개수를 동적으로 지정하는 기능 JDK 1.5부터 추가되었으며, printf()가 가변 인자를 사용한 대표적인 메서드라고 할 수 있다. 가변 인자 기능이 없던 JDK 1.4 이하의 버전에서는 컬렉션 또는 배열을 이용해 여러 개의 인수를 처리했다. 컬렉션/베열 사용 예시 import java.util.Vector; public class main { public static void main(String args[]) { String[] str = {"a", "b", "c"}; Vector v = new Vector(); v.add("A"); v.add("B"); v.add("C"); print_val(str); print_val(v); } stati..

Java 2021.10.16

[Enum] 열거 타입

열거 타입(Enumeration type) 관련이 있는 상수의 집합 enum은 enumeration이라는 셈, 계산, 열거, 목록이라는 뜻의 영단어의 앞부분을 딴 예약어다. Java 1.5 이상부터 지원한다. enum을 사용하면 비교 시 값뿐만 아니라 타입까지 비교가 가능하며, 상수값이 재정의되더라도 재컴파일할 필요가 없다는 장점이 있다. 정의 클래스 정의하듯이 정의한다. enum NAME { VAL1, VAL2, VAL3 } // 예시 enum STATUS { START, RUNNING, STOP, TERMINATE } 열거형 변수 선언 및 초기화 마찬가지로 클래스 사용하듯이 사용한다. // 선언 NAME name; // 상수 접근 NAME.VAL1 // 예시 STATUS status = STATUS...

Java 2021.09.23

Overloading / Overriding

다형성 (polymorphism) 하나의 객체가 여러 가지 타입을 가질 수 있는 것 객체 지향 프로그래밍을 구성하는 특징 중 하나다. Overloading / Overriding은 Java의 다형성을 지원하는 방법이다. 각 개념은 아래와 같다. Overloading 사전적으로 '초과로 적재하다'라는 의미이다. Java에서는 클래스 내에 같은 이름의 메서드를 여러 개 선언하는 것을 의미하며, 매개변수의 타입, 개수, 순서 중 하나가 달라야 한다. 매개변수가 동일한 경우에는 반환형이 달라도 오버로딩되지 않는다. 하나의 함수가 하나의 기능을 구현해야 하는 C와 달리, 하나의 메소드명으로 여러 기능을 구현한다. 예시 print문을 오버로딩한 클래스다. public class Overloading { String..

Java 2021.09.22

[File] getPath() / getAbsolutePath() / getCanonicalPath()

Java에서는 File 클래스를 이용해 파일과 디렉터리를 다룰 수 있다. 이 글에는 File 객체의 경로를 반환하는 세 가지 함수의 차이점을 정리해둔다. getPath() 파일 객체의 경로를 반환한다. 여기서 경로란 파일 객체 생성 시 전달된 경로를 뜻한다. import java.io.File; import java.io.IOException; public class main { public static void main(String args[]) throws IOException { String dir = "./src"; String file_path = "main.java"; File file = new File(dir, file_path); if (file.exists()) System.out.pr..

Java 2021.09.21

[maven] 디렉터리 구조

maven 프로젝트의 디렉터리 구조에 대해 정리해둔다. 디렉터리 구조 Project/[Project Name] ├ src │ ├ main │ │ ├─ java │ │ └─ resources │ │ │ └ test │ ├─ java │ └─ resources │ ├ target └ pom.xml 설명 src/main/java : java 소스 파일이 저장된 경로 src/test/java : java 테스트 파일이 저장된 경로 src/*/resources : properties, xml 등과 같은 설정 파일이 저장된 경로 target : war, jar와 같은 컴파일 결과 파일이 저장된 경로 pom.xml : maven 기본 설정 파일. 프로젝트 파일이라고도 하며, 프로젝트 root 경로에 위치하고 있다. ..

Java 2021.09.19
1 2