본문 바로가기

Spring Framework/Java Fundamental

(13)
[Java] Collection Map 사용방법 정리 #About Map DataStructureList, Set, Deque 같은 다른 자료구조와 달리 Collection의 하위 인터페이스가 아닌 독립적으로 존재한다.Map은 Key-Value 쌍으로 구성된 자료구조이다. Key는 중복을 허용하지 않는다.Value는 중복을 허용한다.  HashMap : 해시 테이블을 사용해 구현된 맵이다. 순서를 보장하지 않으며, 데이터 접근 & 수정 & 삭제 작업을 O(Log1) 만에 수행한다.LinkedHashMap : 해시 테이블 + 연결 리스트 자료구조를 사용해 구현된 맵이다. 입력 순서를 보장하며, 데이터 접근 & 수정 & 삭제 작업을 O(Log1) 만에 수행한다TreeMap : 트리 자료구조를 사용하여 구현된 맵이다. Comparable 인터페이스를 구현하여 데..
[JAVA] List.of vs Arrays.asList 불변 리스트 생성 방법 #ListJava Language 에서 기본적으로 리스트 객체를 생성하면 가변으로 생성된다. 이는 리스트의 정의를 생각하면 당연한 현상이다.About List DataStructure : 내부 요소들의 순서를 유지하며, 중복된 요소를 허용한다. 배열과 달리 "동적으로 요소를 추가 혹은 제거가 가능하다." _리스트 관련 포스팅import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class test { public static void main(String[] args) { List arrayList = new ArrayList(); List linkedList = new Linke..
[JAVA] HashSet vs LinkedHashSet vs TreeSet #About Set DataStructureSet 자료구조는 리스트, 배열과 같은 자료구조와 달리 중복을 허용하지 않으며, 순서를 보장하지 않는 자료구조이다. Java에서 Set은 Collection Interface 내부에 정의되어 있으며 내부 구현 구조에 따라 HashSet, LinkedHashSet, TreeSet으로 구분된다.  #1 HashSetHashSet은 내부적으로 Hash Table을 사용하여 데이터의 추가, 검색, 삭제를 O(1)로 연산이 가능한 강력한 성능을 자랑하는 자료구조이다. Hash 자료구조란? 📎Link데이터의 유일성이 중요할 때 사용한다.  // 1. 출력 순서에 상관 없이 중복을 제거하고 출력해야 하는 경우 Integer[] inputArr = ..
[JAVA] Array vs ArrayList vs LinkedList 내부 구조 및 성능 비교 ✨수정사항- List Interface 제공 기능 파트 추가 2024.08.08#1 Array 배열은 자료구조를 처음 공부할때 배우는 가장 기본적인 자료구조이다. About Array배열은 내부 원소가 연속된 메모리 공간에 저장되어 있다. 따라서 원소가 저장된 위치만 알고 있다면 즉시 원소에 접근할 수 있다는 장점을 가진 강력한 자료구조다.  String[] arr = {"n", "o", "v"}; System.out.println(arr[2]); 하지만 일반 배열은 크기가 고정되어 있다는 한계를 가진다. 이처럼 크기가 고정되어 있는 배열의 특징을 정적 할당 (static allocation) 이라고 한다. #2 List 크기가 고정되어 있다는 배열의 한계를 극복하기 위해 Lis..
[JAVA] 예외 처리 Catch Exception "Exception 예외" 란, 프로그램이 예기치 못한 상황으로 인해 발생하는 현상으로 배열의 범위에서 벗어 났을때 발생하는 IndexOutOfBoundsException, 런타임에 발생하는 RuntimeError 등 다양한 예외 상황이 존재한다. Java 언어는 이러한 다양한 예외를 처리하기 위한 문법을 제공한다. 예외를 처리하기 위해서는 두 가지 규칙만 생각하면 된다. "1. 예외를 잡거나" "2. 예외를 외부로 던지거나" 이번 포스팅 에서는 예외를 잡는 방법에 대해서 정리해 보고자 한다. #1 예외 계층#2 Catch Exception#2.1 try ~ catch#2.2 try ~ catch ~fianlly #3 사용자 정의 예외#3.1 커스텀 체크 예외#3.2 커스텀 언체크 예외  *개인적인 공부..
[JAVA] 중첩 클래스 Nested Class & 내부 클래스 Inner Class 내용 정리 #List중첩 클래스, 내부 클래스#1 중첩 클래스와 내부 클래스의 차이#2 중첩 클래스#3 내부 클래스-3.1 inner class-3.2 local class-3.3 익명 클래스#4 결론 *개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.# 중첩 클래스, 내부 클래스 중첩 클래스 (Nested Class) 와 내부 클래스 (Inner Class) 란, 이름에서 유추할 수 있듯이 클래스 내부에 선언된 클래스를 의미한다. 일반적으로 클래스를 선언할 때는 아래와 같이 별도의 클래스 파일을 생성한다.  하지만 만약 ClassB 내부의 필드가 ClassA 내부 에서만 사용되거나 긴밀한 관계를 맺고 있다면 ClassB 를 ClassA 내부에 작성하여 내부 클래스 ..
[Java] String & StringBuilder 비교 & 메서드 정리 * 다음 포스팅은 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.String 메서드 파트는 지속적으로 추가해 나갈 예정입니다.String#문자열 선언 방법 자바에서 문자열은 객체의 주소를 저장하고 있는 참조형 타입이다. 따라서 문자열 변수에는 객체의 주소를 가리키는 참조값이 들어 가야만 한다. 하지만 문자열은 매우 빈번하게 사용되는 자료형 이기에 "문자열 리터럴" 형태로 참조형 변수에 초기화 해 주어도 자바 컴파일러가 자동으로 코드를 객체 인스턴스를 생성하는 형태로 변환해 준다.  public static void main(String[] args) { // #1 객체 생성을 이용한 문자열 선언 String str = new St..
[JAVA] Immutable Object 불변 객체 #불변객체-불변 객체를 사용하는 이유-불변 객체의 값을 변경하고 싶다면?-자바의 대표적인 불변 객체로는 String이 존재한다. * 해당 포스팅은 개인적인 공부 내용을 기록하는 용도로 작성된 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.#불변객체객체지향 프로그래밍 에서의 불변 객체 [Immutable Object] 란 한 번 인스턴스가 할당 되었다면 이후 객체의 상태가 변경이 불가능한 객체를 의미한다. 불변객체를 만드는 방법은 간단하다. 다음 코드와 같이 모든 내부 프로퍼티의 접근 제어자를 외부에서 접근할 수 없도록 private로 선언한 뒤, 값을 변경 불가능 하도록 final keyword로 작성해 주면 된다. public class ImmutableObject { private fina..