java 36

TreeMap

이미지 출처 : https://adrianmejia.com/data-structures-for-beginners-trees-binary-search-tree-tutorial/ 트리구조. TreeMap 이미지 출처 : https://www.java8net.com/2020/02/treemap-in-java.html TreeMap은 이름에서 알다시피 이진검색트리 형태에 key와 value 쌍으로 이루어진 데이터를 저장한다. 검색과 정렬에 적합한 컬렉션 클래스다. 범위 검색은 TreeMap이 성능이 좋지만, 그게 아니라면 검색 부분에서는 HashMap 성능이 더 좋다. TreeMap의 메서드 method 설명 TreeMap(Comparator c) 지정한 Comparator를 기준으로 정렬하는 객체 생성 Tre..

Java 2020.09.09

HashMap

HashMap 출처 : https://medium.com/tanay-toshniwal/count-distinct-elements-in-input-sequence-using-java-hashmaps-373a58697dd2 HashMap은 Hashtable의 페이스리프트 버전이다. Map을 구현한 클래스의 특징은 아래와 같다. key, value를 묶어서 하나의 데이터entry로 저장한다. key는 유일unique해야 한다. value는 중복 가능 해싱hassing을 사용하므로 많은 양의 데이터를 검색할 때 뛰어난 성능을 보인다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { transient Entry[]..

Java 2020.09.09

TreeSet

TreeSet TreeSet은 이진 검색 트리binary search tree라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스다. 이진 검색 트리는 정렬, 검색, 범위 검색Range Search에 높은 성능을 보인다. TreeSet은 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리Red-Black tree로 구현 되었다. Tree는 여러 개의 node가 서로 연결된 구조다. 가장 상위에 있는 노드를 root라고 한다. 위 아래로 연결된 두 노드를 부모-자식 관계라고 한다. 각 노드에 최대 2개의 노드를 연결할 수 있다. 출처 : 자바의 정석 기초편 요약집 위 표는 TreeSet에 7,4,9,1,5를 순서대로 저장한다고 했을 때 진행과정이다. 맨 처음 저장되는 데이터 7이 루트root가 된다. 그 ..

Java 2020.09.09

HashSet

HashSet HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이다. 다시 상기하자면, Set은 중복 허용 X 순차 저장 X 중복된 데이터를 저장하려고 하면 false를 반환한다. HashSet의 특징을 이용하면 중복을 쉽게 제거할 수 있다. HashSet의 메서드 method 설명 HashSet() (생성자)객체 생성 HashSet(Collection c) 지정한 컬렉션을 포함하는 객체 생성 HashSet(int initialCapacity) 지정한 값을 초기용량으로 하는 객체 생성 HashSet(int initialCapacity, float loadFactor) 초기 용량과 load factor를 지정하는 생성자 boolean add(Object o) 객체 저장 boolean addAl..

Java 2020.09.09

Comparable & Comparator

public interface Comparator { int compare(Object o1, Object o2); } public interface Comparable { public int CompareTo(Object o); } Comparable 기본 정렬 기준을 구현할 때 사용한다. Comparator 기본 정렬 기준 외, 다른 기준으로 정렬할 때 사용한다. package com.javaex.ch11; import java.util.Arrays; import java.util.Comparator; public class ComparatorEx { public static void main(String[] args) { String[] strArr = {"cat", "Dog", "lion", "t..

Java 2020.09.09

Arrays

Arrays 배열을 다루기 편한 static메서드를 제공한다. 배열의 출력 toString() static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) ... ... static String toString(Object[] a) println메서드처럼 모든 타입을 출력할 수 있게 오버로딩 되어 있다. 배열 복사 copyOf() 배열 전체를 복사한다. copyOfRange() 배열 일부를 복사한다. int[] arr = {0,1,2,3,4}; int[] arr2 = Arrays.copyOf(arr, arr.length); //0,1,2,34 int[] arr3 = Arrays.cop..

Java 2020.09.09

List

ArrayList ArrayList는 컬렉션 프레임워크에서 가장 많이 사용하는 클래스다. Object를 이용해 순차적으로 데이터를 저장한다. 저장 공간이 없으면 동적으로 크기가 늘어난다. 새로운 배열을 만들어서 기존의 배열을 복사해 다시 저장한다. public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { ... transient Object[] elementData; //Object배열 ... } ArrayList의 소스 일부다. elementData라는 이름의 Object[]를 멤버 변수로 선언해놨다. 따라서 ArrayList는 모든 타입의 객체를 담을 수 있다. A..

Java 2020.09.09

Stack & Queue

📚 자바의 정석을 정리한 내용입니다. 출처 : https://gohighbrow.com/stacks-and-queues/ 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 Last in first out(LIFO)구조. 큐는 처음 저장한 데이터를 가장 먼저 꺼내는 First in first out(FIFO)구조다. 참고로 Stack은 클래스, Queue는 인터페이스다. Stack의 메서드 method 설명 boolean empty() Stack이 비었는지 확인 Object peek() Stack 맨 위에 저장된 객체를 반환 pop과 달리 꺼내는 것은 아님 비어 있다면 EmptyStackException Oject pop() 맨 위에 저장된 객체를 꺼낸다. 비었다면 역시 EmptyStackExcption ..

Java 2020.09.09

Collections Framework - 핵심 인터페이스

📚 자바의 정석을 정리한 내용입니다. Collections Framework는 다수의 데이터를 다루는 데 필요한 다양한 클래스를 제공한다. 핵심 인터페이스 상속계층도 이미지 출처 : http://dinfree.com/lecture/language/112_java_6.html interface 특징 구현 클래스 List 순서가 있는 데이터 집합. 중복 허용 ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터 집합. 중복 없음. HashSet, TreeSet Map key, value 쌍(pair)으로 이루어진 데이터 집합. 순서 유지 안 됨. key는 중복 안 됨. HashMap, TreeMap, Hashtable, Properties 컬렉션 프레임워크..

Java 2020.09.09

내부 클래스inner class

📚 자바의 정석을 정리한 내용입니다. 내부클래스의 종류 내부 클래스는 단순히 클래스 내에 선언된 클래스다. 내부 클래스의 장점 1.내부 클래스에서 외브 클래스 멤버에 쉽게 접근 가능 2.코드 복잡성을 줄인다(캡슐화) 위 다이어그램에서 보다시피 내부 클래스는 클래스의 멤버처럼 다룬다. 다른 점은 익명 클래스Anonymous class가 있다. 내부클래스의 제어자, 접근성 자바의 정석 예제에 간단히 주석을 달았습니다. class Outer { class InstanceInner { int iv = 100; } static class StaticInner { int iv = 200; static int cv = 300; } void myMethod() { class LocalInner { int iv = 40..

Java 2020.09.09