HashMap과 HashSet은 Hashtable - 검색속도 최고(중복x, 순서x) TreeSet과 TreeMap은 R-BT - 항상 정렬된 상태를 유지(범위 검색은 이게 빠르다) *Hashtable 배열에서 찾고자 하는 값이 있을 때 한번에 접근 가능 해싱(hashing): 데이터를 가급적 고유한 수의 값으로 표현하는 작업 해시함수(hash function) : 데이터로부터 고유한 수의 값을 계산하는 함수 *해시함수(hash function) 해시 값을 배열의 인덱스로 사용해서 key값을 저장 해시 테이블의 버킷(bucket)에 저장 *해싱 만약 해시테이블의 크기가 7인 경우 7로 나눈 나머지 값을 구한다. 7로 나눈 나머지 값이 0인 경우 0번째 방에 간다. 정렬된 상태가 유지되지 않는다. 만약 9..
Java
TreeSet은 이진 검색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진 검색 트리는 정렬, 검색, 범위검색에 높은 성능을 보이는 자료구조이며 TreeSet은 이진 검색 트리의 성능을 향상 시킨 '레드-블랙 트리'로 구현되어 있다. TreeSet : Set인터페이스를 구현했다.(중복x, 순서x) - 내부적으로 Red - Black Tree로 구현되어 있다.(균형잡힌 Binary Search Tree, BST) - 균형 이진 트리기 때문에 검색, 삽입, 삭제하는 효율이 높아진다. - 보통의 경우 HashSet을 쓰지만 범위 검색 시 TreeSet 사용한다. TreeSet예시 public class _01_TreeSet {//검색이 유리함 publi..
HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이며, Set인터페이스의 특징대로 HashSet은 중복된 요소를 저장하지 않는다. HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 한다. HashSet 예시 import java.util.HashSet; public class _01_HashSet { public static void main(String[] args) { HashSet hs = new HashSet(); //요소 추가 시 중복 허용x hs.add(3); hs.add(4); hs.add(5); hs.add(6); hs.add(3); hs.add(4); hs.add(5); hs.add(6); hs.remove(5);//..
LinkedList는 불연속적으로 존재하는 데이터를 서로 연결(link)한 형태로 구성되어 있다. 데이터를 삭제, 추가할 수 있고 처리 속도가 빠르다. LinkedList는 이동 방향이 단방향이기 때문에 다음 요소에 대한 접근은 쉽지만 이전요소에 대한 접근은 어렵다. 이점을 보완한 것이 DoubleyLinkedList이다. DoubleyLinkedList 1.참조형 변수를 만들어줘야 한다. 2. RandomAcess 불가능 3. 웬만해서는 arraylist를 사용하지만 중간에 값을 넣어야 하는 경우 linkedlist를 사용해야 한다. LinkedList 클래스는 이름과 달리 '링크드 리스트'가 아닌 '더블 링크드 리스트'로 구현되어 있다. public class _01_LinkedList { publi..
매개변수로 객체를 요구할 때, 기본형 값이 아닌 객체로 저장해야할 때, 객체간의 비교가 필요할 때 등등의 경우에는 기본형 값들을 객체로 변환하여 작업을 수행해야 한다. 이때 사용되는 것이 래퍼(wrapper)클래스이다. 래퍼클래스(Wrapper) : 기본 자료형을 클래스로 정의한 후 객체로 사용할 수 있다. Boolean형과 Char타입을 제외하고는 모두 Number클래스를 상속 받았다. byte => Byte short => Short int => Integer long => Long double => Double char => Character boolean => Boolean => BigInteger => BigDecimal public class _01_Wrapper { public static ..
ArrayList는 컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션 클래스이다. ArrayList는 List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는 특징을 갖는다. ArrayList는 기존의 Vector를 개선한 것으로 Vector와 구현원리, 기능적 측면에서 동일하다고 할 수 있다. Vector는 기존에 작성된 소스와의 호환성을 위해서 계속 남겨두고 있기 때문에 가능하면 Vector보다 ArrayList를 사용하자. ArrayList : 동적 배열 : 배열의 크기가 늘어난다. 1. 컬렉션 중 가장 많이 사용된다. 2. 배열로 구현되어 있는데 기본 크기가 10, 16으로 잡힌다. 3. 메모리가 부족한 경우 1.5배 정도 늘어난다. 4. RandomAcess 가능 (임의의..
collections framework란 데이터를 저장, 검색,조작 및 관리하기 위한 표준 인터페이스와 클래스의 모음을 말한다. Collection Framework의 주요 특징 -인터페이스(Interfaces) : 다양한 인터페이스를 정의하고 있다. - 클래스(Class) : 각 인터페이스를 구현한 클래스들을 포함하고 있다. - 알고리즘(Algorithms) : 다양한 알고리즘을 제공한다. - 동기화(SYnchronization) : 여러 스레드가 동시에 컬렉션을 수정하려는 경우 발생할 수 있는 문제를 방지한다. Collection 인터페이스 : 모든 컬렉션 클래스의 루트 인터페이스로, 기본적인 컬렉션 동작을 정의한다. Map 인터페이스는 Collection 인터페이스를 구현하지 않았다. Collect..
인터페이스(interface) 1. 추상 클래스의 일종으로 추상 클래스보다 추상화 정도가 높다. 2. 추상메서드만 가능하다. 일반 메서드는 선언 불가 => public abstract 3. 상수만 선언 가능하다. 변수는 불가 => public static final 4.interface에도 클래스와 같이 접근제어자로 public 또는 default를 사용할 수 있다. 인터페이스를 작성하는 것은 클래스를 작석하는 것과 같다. 다만 키워드로 class 대신 interface를 사용한다는 것만 다르다. 인터페이스의 장점 1. 서로 관련이 없는 클래스들을 같은 명령으로 처리할 수 있다. => 표준화 가능 2. 독립적인 프로그래밍이 가능하다. 3. 재사용이 쉬워지고 따라서 개발 기간이 단축된다. //abstrac..