Java
-
자바[JAVA] - treeset()개념 및 여러가지 기능들Java/자바의정석 2023. 3. 9. 23:42
TreeSet 범위 탐색 정렬에 유리하다 이진 탐색트리(binary serach tree)로 구현 이진트리는 모든 노드가 최대 2개의 하위 노드를 가지고있다. HashSet에 비해 추가와 삭제에는 시간이 조금 더 걸린다. 데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림 (비교 횟수가 증가하기 때문) 일반적 이진 탐색 트리의 경우에는 트리의 높이만큼 시간이 걸린다. 데이터값이 잘 분산되어있다면 효율적이지만 그렇지 않다면 비효율적이다. 이러면 비효율적인 부부을 개선하기위해 이진탐색트리가 나왔다. 부모보다 작은 값을 가지는 노드는 왼쪽자식으로, 큰 값을 가지는 노드는 오른쪽자식으로 배치하여 데이터의 추가 삭제시에 균형을 이룰 수 있도록 맞춰준다. TreeNode Left 왼쪽 자식노드 Object elem..
-
[JAVA] 자바 - 제네릭스(generics)란?Java/자바의정석 2023. 3. 8. 00:16
제네릭스(generics)란? 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스 컴파일시 타입 체크를 해주는 기능 객체 타입을 '컴파일 시' 체크하므로 안정성을 높이고 형변환의 번거로움을 줄인다. 제네릭스 선언 // 일반 클래스 class Box { Object item; void setItem(Object item) {this.item = item;} Object getItem() {return item;} } // 제네릭 클래스 class Box { T item; void setItem(T item) {this.item = item;} T getItem() {return item;} } 보다 더 이해가 쉽도록 아래의 코드를 보며 확인해보자. 해당 코드는 자바의정석 예제코드이다. package Ju..
-
자바[JAVA] - Comparable과 Comparator의 이해Java/자바의정석 2023. 2. 28. 15:02
Comparable과 Comparator에 대해 알아보자 Comparable과 Comparator의 기본 개념 모두 인터페이스(Interface)로 구현되어있다. 즉, 사용하고자한다면 인터페이스 내에 선언된 메소드를 반드시 구현해야한다는 의미이다. 객체 비교를 하기위해 사용된다. Comparable은 무엇인가? Comparable : 자기자신과 매개변수를 비교하는 것 우선 기본개념만 알고 자세히 알기위해 아래의 코드를 살펴보자. public class compareTest { public static void main(String[] args) { int a = 1; int b = 2; if(a > b) { System.out.println("a가 b보다 큽니다."); }else if(a == b){ S..
-
자바 [JAVA] - HashSet개념 및 활용Java/자바의정석 2023. 2. 27. 23:29
자바의 HashSet에 대해알아보자 HashSet의 기본 개념 순서를 보장하지 않으며, 중복을 허용하지 않는다. HashSet - Set인터페이스를 구현한 대표적인 컬렉션 순서를 유지하려 한다면 LinkedHashSet클래스를 사용해야한다. HashSet의 생성자 HashSet() 기본생성자 HashSet(Collection c) 저장된컬렉션에 모든 객체 추가 HashSet(int initialCapacity) 초기용량을 지정한다. HashSet(int initialCapacity.floatloadFactor) 보통 loadFactor용량이 80%정도 찼을 경우 용량을 늘려준다. boolean add(Object o) 추가 boolean addAll(Object o) 합집합 boolean remove(O..
-
자바의정석 Comparator 활용하기Java/자바의정석 2023. 2. 27. 23:29
자바의정석 Comparator활용하기! 아래의 코드는 자바의정석 예제코드이다. package JavaChap11; import java.util.*; class Ex11_7 { public static void main(String[] args) { String[] strArr = {"cat", "Dog", "lion", "tiger"}; Arrays.sort(strArr); System.out.println("strArr=" + Arrays.toString(strArr)); Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); System.out.println("strArr=" + Arrays.toString(strArr)); Arrays.sort(strArr, ..
-
자바의정석 Arrays여러가지 메서드Java/자바의정석 2023. 2. 27. 23:28
Arrays의 여러가지 메서드 메서드 설명 sort() 정렬 asList 배열을 ArrayList로 변환 copyOf() 배열을 복사 copyOfRanger() 특정 범위를 지정하여 복사 fill() 배열 채우기 위와같은 메서드 외에도 많은것들이 있다. 우선 자바의정석 예제로 나온 코드를 보며 실습을 해보자. package JavaChap11; import java.util.*; class Ex11_6 { public static void main(String[] args) { int[] arr = {0,1,2,3,4}; int[][] arr2D = {{11,12,13}, {21,22,23}}; System.out.println("arr="+Arrays.toString(arr)); System.out.p..
-
자바 Iterator란?Java/자바의정석 2023. 2. 27. 23:28
Iterator란? 모든 컬렉션 프레임워크(List, Set, Map, Queue 등)에 값을 읽어(Read)가져오거나 삭제(remove)하는 기능 Iterator의 장점 모든 컬렉션 프레임워크(List, Set, Map, Queue 등)에서 공통으로 사용이 가능하다. 값을 보다 쉽게 가져오고, 삭제가 가능하다. Iterator의 단점 단방향으로만 반복이 가능하다. 값을 변경 및 추가가 불가능하다. 대량의 데이터를 제어하는 경우에는 속도가 느리다. Iterator의 메서드 메서드 기능 Iterator.hasNext() Iterator내부의 다음값이 존재하는지 여부 Iterator.next() Iterator의 다음값을 가져오는 기능 Iterator.remove() Iterator에서 현재 요소를 제거합니..
-
자바 Queue 활용해보기Java/자바의정석 2023. 2. 27. 16:59
앞선 게시글에서 Stack을 활용하여 예제를 다루어보았는데 이번에는 Queue를 활용해보자. package JavaChap11; import java.util.*; class Ex11_4 { static Queue q = new LinkedList(); static final int MAX_SIZE = 5; public static void main(String[] args) { System.out.println("help를 입력하면 도움말을 볼 수 있습니다."); while(true) { System.out.print(">>"); try { // 화면으로부터 라인단위로 입력받는다. Scanner s = new Scanner(System.in); String input = s.nextLine().trim..