기록의 공유

잊지않기 위한 기록의 공유

Backend/Java 38

가변 Collection , 불변 Collection

자바에서 리스트를 만들때 여러가지 방법을 사용할 수 있다.List.of()Arrays.asList()new ArrayList()하지만 각각의 차이를 모르고 쓰다가는 UnsupportedOperationException를 만나게 될것이다. 이번에 각각의 차이를 정리해보자. List List.of() - 완전 불변 리스트 (Java 9+) List.of()는 완전히 수정 불가능한 불변 리스트를 만든다.List fruits = List.of("apple", "banana", "orange");fruits.add("grape"); // UnsupportedOperationExceptionfruits.remove(0); // UnsupportedOperationException ..

Backend/Java 2025.12.09

Stream ( with claude )

Stream은 컬렉션, 배열 등의 데이터를 함수형으로 처리하는 API입니다 (Java 8+) Stream 생성 방법// 컬렉션에서List list = Arrays.asList("a", "b", "c");Stream stream = list.stream();// 배열에서String[] arr = {"a", "b", "c"};Stream stream = Arrays.stream(arr);// 직접 생성Stream stream = Stream.of("a", "b", "c");// 범위 생성IntStream range = IntStream.range(1, 5); // 1,2,3,4IntStream rangeClosed = IntStream.rangeClosed(1, 5); // 1,2,3,4,5 배열..

Backend/Java 2025.09.30

자바 정렬 ( with claude )

1. Comparable vs Comparator 언제 뭘 쓸까?Comparable 사용:학생을 학번순으로 정렬하는 것처럼, 객체의 "자연스러운" 기본 정렬 방식이 있을 때한 가지 정렬 방식만 필요할 때클래스를 직접 수정할 수 있을 때Comparator 사용:나이순, 이름순, 점수순 등 여러 가지 정렬 방식이 필요할 때String, Integer 같은 기존 클래스를 다르게 정렬하고 싶을 때클래스를 수정할 수 없을 때 2. Comparable 상세 설명 Comparable 구현하기class Student implements Comparable { String name; int age; public Student(String name, int age) { this.n..

Backend/Java 2025.09.28

try-with-resources

try-with-resoucre를 안썼을경우 사용 후에 반납해주어야 하는 자원들은 Closable 인터페이스를 구현하고 있으며, 사용 후에 close 메소드를 호출해주어야 했다.Java7 이전에는 close를 호출하기 위해서 try-catch-finally를 이용해서 Null 검사와 함께 직접 호출해야 했는데, 대표적으로 파일의 내용을 읽는 경우를 다음과 같이 구현할 수 있다.public static void main(String[] args) throws IOException { String filePath = "C:\\KOSATEMP\\a.txt"; FileInputStream fis = null; BufferedInputStream bis = null; ..

Backend/Java 2024.03.19

자바 - 상속

상속부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있고자식 클래스는 부모 클래스를 선택해서, 그 부모의 멤버를 상속받아 쓸 수 있는것이 상속이다. 상속을 하는 이유는 이미 만들어진 클래스를 재사용해서 새로운 클래스를 만들기 위함이다.효율적이고, 개발시간을 줄여준다. 상속받은 모든 필드,메소드를 자식클래스에서 사용할 수 있는것은 아니다.- 부모클래스의 private 접근제한자를 가지는 필드 및 메소드는 자식이 물려받을수없다.- 부모와 자식클래스가 서로 다른 패키지에 있다면 부모의 default 접근제한자를 가지는 필드와 메소드에 접근할 수 없다.- 그 이외의 접근제한자를 가지는 필드와 메소드는 모두 상속의 대상이 된다. 부모 생성자의 호출 - super(...);자바에서 자식 객체를 생성하면..

Backend/Java 2024.03.11

자바 - 클래스 (내부클래스-인스턴스 클래스,static 클래스)

내부 클래스(= 중첩클래스,Inner클래스)내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다.보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다. 내부 클래스는 대신 클래스 내에 선언되어 사용되며, 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다.이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다. pub..

Backend/Java 2024.03.06

자바 - 배열 , 제어문

배열 배열이란?배열(Array)은 자료구조 중 하나로, 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법이다.배열은 인덱스(index)를 사용해 각 요소에 접근할 수 있다. 이러한 특징 때문에 배열은 데이터의 순서를 유지하고, 특정 위치의 요소에 빠르게 접근할 수 있는 장점이 있다. 배열(Array)의 장점 및 단점장점빠른 접근 배열은 인덱스를 사용하여 요소에 빠르게 접근할 수 있다. 인덱스를 알고 있다면 원하는 위치의 요소에 시간복잡도 O(1)에 접근할 수 있다.메모리 공간의 효율성 배열은 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용할 수 있다. 또한, 요소들은 순서대로 저장되기 때문에 인접한 요소들에 대한 캐시 지역성이 좋아 성능 향상에 도움을 줄 수 있다...

Backend/Java 2024.03.04

자바 n진법 <-> 10진법 바꾸는법

n진법 -> 10진법 Integer.parseInt(값,진법) 반환값은 Int이다. String num = "01101"; // 2진법 기준 값 = 13 //해당 문자열의 숫자값을 도출 -> 1101 System.out.println(Integer.parseInt(num)); //전달 인자가 2진법으로 표현됬음을 알리고, 10진법으로 바꿔달라는 요청 // 01101을 2진수 보고 10진법으로 바꿨을시 값 -> 13 System.out.println(Integer.parseInt(num,2)); // 01101을 4진수로 보고 10진법으로 바꿨을시 값 -> 81 System.out.println(Integer.parseInt(num, 4)); // 01101을 8진수로 보고 10진법으로 바꿨을시 값 -> ..

Backend/Java 2024.01.18

[Java] 플로이드 워셜 (Floyd-Warshall) 알고리즘 [미완]

플로이드 워셜1. 음수가중치가 있어도 된다. 하지만 음수 사이클이 존재하면 안된다.2. 다익스트라 알고리즘은 "어떤하나의 정점"에서 부터 다른 모든 정점까지의 최소비용을 구하는 알고리즘이지만 플로이드 워셜은 "다른모든정점"에서 부터 "다른 모든정점"까지의 최소비용을 구할 수 있다.3. 인접 행렬을 사용한다. (모든 정점에서 부터 다른 모든정점까지의 최소비용을 저장한다)4. 시간복잡도는 O(v^3)이다. v는 정점 "다른모든정점"에서 부터 "다른 모든정점"까지의 최소비용 정보가 필요할때 사용하자. 플로이드 워셜 코드 + 예제 (백준 11404)public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(..

Backend/Java 2023.01.10