Java 33

Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_Comparable 과 Comparator

Comparable : 객체 자체가 정렬기준을 갖도록 하기 위해 사용한다객체 클래스가 Comparable 인터페이스를 구현하고 compareTo() 메서드를 정의한다 기본정렬 방식(자연 순서)을 제공하고 한가지 기준으로만 정렬할 수 있다 public class Person implements Comparable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(Person other) { return Integer.compare(..

Java 2024.10.18

Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_TreeMap

TreeMap : 자바에서 키와 값의 쌍을 저장할 때 사용되는 컬렉션으로 , 키를 기준으로 항상 정렬된 상태로 데이터를 관리한다. 내부적으로 레드-블랙 트리 구조를 사용하여 효율적으로 정렬하고 탐색한다 - 키 기반 정렬: 키를 기준으로 항상 오름차순으로 정렬된다 - 중복 키 허용 안하고 같은 키가 중복되어 들어오면 덮어쓴다  리턴 타입메서드설명리턴 타입메소드설명V (값)put(K key, V value)키와 값을 추가하며, 동일한 키가 있을 경우 새로운 값으로 덮어쓴다 get(Object key)지정된 키에 해당하는 값을 반환합니다. 키가 없으면 null을 반환 remove(Object key)지정된 키와 그에 해당하는 값을 제거하고, 제거된 값을 반환합니다. 키가 없으면 null을 반환booleanco..

Java 2024.10.18

Java_컬렉션 자료구조_검색기능을 강화시킨 컬렉션_TreeSet

TreeSet: TreeSet 은 이진트리(binary tree) 를 기반으로 한 Set 컬렉션이다 * 이진트리(binary tree) : 여러개의 노드(node)가 트리 형태로 연결된 구조로, 루트 노드(root node) 라고 불리는 하나의 노드에서 시작해 각 노드에 최대 2개의 노드를 연결 할 수 있는 구조를 가지고 있다  자바에서 순서대로 정렬된 집합을 만들 때 사용하는 자료구조이다 중복된 값을 허용하지 않고, 값을 정렬해서 저장한다 예) 슷자를 넣으면 작은>큰, 문자열 넣으면 알파벳순서로 메서드리턴타입설명contains(Object o)boolean지정된 요소가 TreeSet에 존재하는지 확인합니다. 존재하면 true, 없으면 false를 반환first()ETreeSet에서 가장 낮은(첫 번째)..

Java 2024.10.18

Java_컬렉션 자료구조_Map 컬렉션

Map 컬렉션 : 키(key)와 값(value) 으로 구성된 엔트리(entry) 객체를 저장하는 자료구조이다중복된 키를 허용하지 않고 각 키는 하나의 값과 연결된다   구현 클래스특징정렬 여부속도Null 허용 여부HashMap해시 테이블 기반, 키-값 쌍 저장정렬되지 않음검색/삽입/삭제: O(1) 평균null 키와 값 허용TreeMap키의 자연 순서 또는 사용자 정의 순서에 따라 정렬오름차순 정렬검색/삽입: O(log n)null 키 허용 안 함LinkedHashMap삽입 순서 또는 접근 순서 유지삽입 순서 또는 접근 순서검색/삽입/삭제: O(1) 평균null 키와 값 허용Hashtable해시 테이블기반의 동기화된 구현, 스레드 안전정렬되지 않음검색/삽입/삭제:O(1) 평균null 키와 값 허용 안 함 ..

Java 2024.10.17

Java_컬렉션 자료구조_Set 컬렉션

Set 컬렉션: 순서와 상관없이 중복을 허용하지않는 요소들의 집한을 관리하기 위한 인터페이스이다 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다  - 동일한 요소를 중복 저장 할 수 없고 이미 존재하는 요소를 추가하려고하면 저장되지 않는다- 요소가 추가되는 순ㅅ를 보장하지 않고 실제 출력될 때 순서가 다를 수 있다 - 중복이 없기 때문에 특정 요소가 존재하는지에 대헤 여부를 빠르게 확인 가능하다  구현클래스설명특징HashSet가장 많이 사용되는 Set 구현체로, 해시 테이블을 이용해 요소를 저장- 순서가 보장되지 않음- 빠른 검색 속도- null 요소 허용LinkedHashSetHashSet과 비슷하지만, 요소가 추가된 순서를 유지- 삽입 순서 유지- null 요소 허용- 성능은 Ha..

Java 2024.10.17

Java_컬렉션 자료구조_Vector

Vector : ArrayList처럼 자바의 java.util 패키지에 포함되어 있으며, 기본적으로 import 후 사용가능하다자바의 List 인터페이스를 구현한 클래스로, 동적 배열 구조를 사용해 데이터를 관리하는 컬렉션이다동기화(Synchronization)가 적용되어 여러 스레드가 동시에 접근할 때 안전하게 데이터를 처리할 수이 있는 스레드 안전 (Thread-safe) 특징을 가지고 있다  Vector 는 기본적으로 배열처럼 인덱스를 통해 요소에 접근 할 수 있다 순서를 유지하면서 데이털르 저장하고 필요에 따라 크기가 동적으로 증가한다 중복된 요소를 허용하기 때문에 동일한 값을 여러번 추가가능하다 동기화(Synchronized) Vector는 모든 메서드가 동기와되어 있어 여러스레드가 동시에 접근..

Java 2024.10.17

Java_컬렉션 자료구조_ArrayList,LinkedList

ArrayList : ArrayList 는 자바의 java.util 패키지에 포함되어있으며 기본적으로 import 후 사용가능자바의 List 인터페이스를 구현한 클래스로, 배열 기반의 동적 리스트이다 동적: 크기가 자동으로 조정된다는 의미 데이터를 순서대로 저장하고 중복을 허용하며 인덱스를 통해 요소에 빠르게 접근 할 수 있는 구조를 가지고 있다 그리고 제한 없이 객체 추가가 가능하다  *ArrayList 에 객체를 추가하면 인덱스 0번 부터 차례대로 저장된다 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨지다 마찬가지로 특정 인덱스에 객체를 삽입하면 해당 인덱스부터 마지막 인덱스 까지 모두 1씩 밀려난다  비교항목ArrayListLinkedList기반 구조배열..

Java 2024.10.17

Java_컬렉션 자료구조_List 컬렉션

- List 컬렉션 : 객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스 가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공한다> 자바의 컬렉션 프레임워크에서 순서가 있는 데이터를 저장하고 관리하는 인터페이스이다  List의 특징 순서유지 : 요소가 추가된 순서를 유지한다 예) 첫 번째 요소는 인덱스 0으로 접근중복허용 : 동일한 값(요소)을 여러 번 추가 할 수 있다  구현 클래스설명특징ArrayList배열 기반의 List로, 가장 많이 사용되는 List 구현 클래스.- 빠른 읽기/쓰기: 인덱스를 통해 요소에 접근하는 속도가 빠름- 삽입/삭제 시 성능 저하: 중간에 삽입 또는 삭제할 때 요소를 이동해야 해서 성능이 떨어질 수 있음LinkedList연결 리스트 기반의 List로, 요소들..

Java 2024.10.17

Java_컬렉션 자료구조_컬렉션 프레임워크

컬렉션프레임워크 (Collection Framework) : 데이터를 저장하고 관리하기 위한 구조와 알고리즘을 제공하는 라이브러리 집합이다: Java는 널리 알려져 있는 자료구조 (Data Structure)를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 java.util 패키지에 포함시켜 놓았다 주요 인터페이스로는 List, Set, Map   인터페이스 분류특징구현 클래스List- 요소를 순서대로 저장하며 중복을 허용한다- ArrayList, LinkedList, Vector, Stack - 배열처럼 인덱스를 통해 요소에 접근할 수 있다 Set- 요소의 순서를 유지하지 않으며, 중복을 허용하지 않는다- HashSet, LinkedHashSet, TreeS..

Java 2024.10.17

Java_스레드풀(threadPool), 스레드풀의 종료

스레드풀(threadPool): 작업 처리에 사용되는 스레드를 제한된 개수만큼 미리 만들어서 작업 큐 (Queue) 에 들어오는 작업들을 이미 만들어진 스레드가 하나씩 맡아서 처리하는 방식이다 작업처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와서 처리한다 스레드풀 사용 후에는 반드시 정상종료(shutdown()) 해줘야 한다  이러한 방식을 사용하면 스레드 재사용하면서 성능이 향상, 메모리부족이나 cpu과부하를 방지하는 리소스 관리가 편하다 - 스레드풀 생성 메소드명(매개변수)초기 수코어 수최대 수특징newCachedThreadPool()00Integer.MAX_VALUE- 작업 수에 따라 동적으로 스레드를 생성 및 제거- 스레드 재사용 가능- 60초 동안 사용되지 않으면 스레드 제거newF..

Java 2024.10.17