Java(3)
-
자바의 로봇청소기, 가비지 컬렉션
자바에는 가비지 컬렉션(Garbage Collection) 이라는 기능이 있습니다.영문 뜻으로 짐작할 수 있듯이 사용하는 객체의 메모리를 주기적으로 검사해서 청소해주는 일을 합니다!C와 C++같은 Unmanaged language는 free()와 같은 함수를 사용해서 직접 메모리를 해제하는 반면Garbage Collector는 이러한 번거로운 일을 대신 해주고 있는 것이죠! (like 로봇청소기) ♻ 가비지 컬렉션 ( vs 가비지 컬렉터) 먼저, 헷갈릴 수 있는 두 용어를 정리하고 가겠습니다. 가비지 컬렉션 메모리 관리 프로세스로, 더 이상 사용되지 않는 메모리(객체)를 자동으로 찾아서 회수하는 작업 → 청소가비지 컬렉터가비지 컬렉션을 수행하는 구성요소. 불필요한 메모리를 실제로 찾아내고 해제하는 ..
2024.07.09 -
[JAVA] 그래프 구현하기 (인접 행렬, 인접 리스트)
그래프(Graph)란? 그래프는 vertex와 edge로 구성된 한정된 자료구조를 의미한다. vertex : 정점 edge : 정점과 정점을 연결하는 간선 아래는 대표적인 그래프 종류들의 예시다. 이러한 그래프는 인접 행렬, 인접 리스트 방식으로 표현할 수 있다. 그래프 구현 - 인접 행렬 먼저, 행렬로 구현하는 방식을 살펴보자 정점 a와 정점 b를 잇는 간선이 있을 경우, 행렬(a,b)에 1을 표기해준다. 만약 가중치가 있는 그래프라면 1 대신 가중치를 넣을 수 있다. 기본적으로 무방향 그래프의 경우는 (a,b) (b,a)에 모두 간선 값을 넣지만, 방향 그래프같은 경우는 위의 표와 같이 방향에 맞는 간선만 표기한다. ex) 정점 1과 3을 잇는 간선이 존재할 때 : graph[1][3] = 1, gr..
2022.03.19 -
[JAVA] Comparator과 Comparable에 대하여
알고리즘 문제를 풀며, 간간이 비교가 필요한 순간이 있다. primitive type같은 경우는 해당 과정이 간단하다. package com.jimkwon; public class Main { public static void main(String[] args) { int a = 3, b = 5; String str1 = "abc", str2 = "bbc"; System.out.println(a > b); System.out.println(a < b); System.out.println(str1.equals(str2)); // 설마 문자열인데 ==로 비교하진 않겠지?! } } 하지만 만약 1. 비교 대상이 객체라면? 2. 비교 대상이 Map과 같은 자료구조라면? 먼저 1번의 경우 간단한 Class를 예로..
2022.02.23