Java 11

[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

[Ubuntu 20.04 LTS] Oracle JDK 1.8.0_202 설치

Ubuntu 20.04 LTS에서 apt을 이용하지 않고 Oracle Java(JDK)를 직접 설치하는 방법을 적어둔다. Oracle에서 제공하는 Java(JDK) 8은 202 버전까지가 무상이기 때문에 해당 버전을 설치해야 하는데, apt 등의 패키지 관리자를 이용하면 최신 버전의 Java가 설치될 수 있기 떄문이다. 물론 반드시 Oracle JAVA를 사용하지 않아도 괜찮다면 OpenJDK를 설치하면 된다. 참고로 AWS EC2에 설치할 것이다. 방법 1. Java 설치 파일 다운로드 https://www.oracle.com/java/technologies/downloads/archive/ Oracle에 접속하여 OS에 따라 적절하게 설치할 자바 버전 파일을 다운로드 받는다. Oracle 계정이 있어..

Linux 2021.10.24

[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

[maven] 개념

빌드 소스 코드를 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물 java 파일, .xml, .jpg, .properties 등을 JVM이나 WAS가 인식할 수 있는 구조로 패키징 하는 과정 또는 결과물 빌드 도구 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 프로그램으로, Maven, Gradle이 많이 사용된다. 라이브러리 추가, 라이브러리 버전 동기화 등 라이브러리 관리가 가능하다. Maven Java 프로젝트 관리 도구. 프로젝트의 전체적인 생명주기를 관리한다. pom.xml에 필요한 라이브러리를 정의하여 해당 라이브러리 뿐만 아니라 라이브러리 동작에 필요한, 즉 라이브러리가 의존하는 다른 라이브러리까지 관리한다. 공식 Maven 중앙 저장소 또는 ..

Java 2021.09.14
1 2