반응형

언어(Language) 109

[Java] 자바 HashMap 개념 정리 및 활용

해시맵 (HashMap) HashMap은 Map 인터페이스를 구현한 대표적인 클래스이다. HashMap은 키와 값으로 구성된 객체를 저장하는데, 이 객체를 Entry 객체라 한다. HashMap은 해시 함수를 통해 키와 값이 저장되는 위치를 결정한다. 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 위치 또한 관계가 없다. 해시 함수를 통해 데이터를 관리하는 자료 구조로 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다. HashMap의 개별 요소가 되는 Entry 객체는 Map 인터페이스의 내부 인터페이스인 Entry 인터페이스를 구현한다. 따라서 Map.Entry 인터페이스에는 다양한 메서드가 정의되어 있다. equals(Object o) 동일한 Entry 객체인지 비교하는 메서드로 동일..

[Java] 자바 Map<K, V> 인터페이스 개념 정리

Map Map 인터페이스는 키(Key)와 값(Value)으로 구성된 객체를 저장하는 구조이다. 키와 값으로 구성된 객체를 Entry 객체라고 한다. 즉, Map 인터페이스는 Entry 객체를 저장하는 구조이며, Entry 객체는 Key 객체와 Value 객체로 저장한다. Map을 사용할 때에 주의할 점은, 키(Key)는 중복 저장이 불가능하며, 값(Value)은 중복 저장이 가능하다. 또한 저장 순서도 유지되지 않는다. 키는 값을 식별하는 용도로 사용되기 때문이다. Map 인터페이스를 구현한 클래스는 HashMap, Hashtable, TreeMap, SortedMap 등이 있다. 다음은 Map 인터페이스를 구현한 클래스에서 공통적으로 사용 가능한 메서드이다. put(Object key, Object v..

[Java] 자바 TreeSet 개념 정리 및 활용

트리셋 (TreeSet) TreeSet은 이진 탐색 트리 형태로 데이터를 저장한다. 또한, Set 인터페이스의 특성인 데이터의 중복 저장을 허용하지 않으며, 순서 또한 유지하지 않는다. 이진 탐색 트리(Binary Search Tree)는 하나의 부모 노드가 최대 두 개의 자식 노드와 연결된 형태로 데이터를 저장한 자료 구조이다. 이진 탐색 트리는 이진트리(Binary Tree)의 일종으로 정렬과 검색에 특화된 자료 구조이다. 최상위 노드를 루트 노드라 하며 그림의 10에 해당된다. 이진 탐색 트리는 모든 왼쪽 자식의 값이 루트나 부모 노드보다 작고, 모든 오른쪽 자식의 값은 루트나 부모 노드보다 큰 값을 가지는 것이 특징이다. 따라서, TreeSet에 값을 추가하면 정렬도 함께 실시하게 된다. 이진 탐..

[Java] 자바 HashSet 개념 정리 및 활용

해시셋 (HashSet) HashSet은 Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스이다. 따라서 Set 인터페이스의 특성을 그대로 중복된 값을 허용하지 않으며, 저장 순서를 유지하지 않는다. HashSet에 값을 추가할 때, 해당 값이 중복된 값인지 아닌지 판단하는 과정 add(Object o)를 통해 객체를 저장한다. 이때, 저장하고자 하는 객체의 해시 코드를 hashCode() 메서드를 통해 얻는다. Set이 저장하고 있는 모든 객체들의 해시 코드를 hashCode() 메서드를 통해 얻는다. 저장하고자 하는 객체의 해시 코드와 Set에 이미 저장되어 있는 객체의 해시 코드를 비교한다. 만약, 같은 해시 코드를 해시 코드를 가진 객체가 존재하지 않는다면, Set에 객체가 추가되며 1번에서 ..

[Java] 자바 Set<E> 컬렉션 인터페이스 정리

Set Set는 집합을 의미한다. 즉, 중복된 값을 허용하지 않는다. 따라서 자바 컬렉션에서의 Set은 중복된 값을 허용하지 않는 데이터들의 집합을 뜻한다. Set은 요소의 중복을 허용하지 않으며, 순서 또한 유지하지 않는 컬렉션이다. Set을 구현한 클래스는 대표적으로 HashSet과 TreeSet이 있다. Set 인터페이스 메서드 Set 인터페이스에 정의된 메서드들은 다음과 같다. add(Object o) 주어진 객체를 추가하고, 성공하면 true를, 중복 객체면 false를 반환한다. contains(Object o) 주어진 객체가 Set에 존재하는지 확인한다. isEmpty() Set이 비어있는지 확인한다. iterator() 저장된 객체를 하나씩 읽어오는 Iterator를 반환한다. size()..

[Java] 자바 Iterator 개념 정리 및 활용

Iterator 이터레이터(Iterator)는 컬렉션에 저장된 요소들을 순차적으로 읽어오기 위해 사용한다. Iterator의 기능은 Iterator 인터페이스에 정의되어 있으며, Collection 인터페이스에는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 메서드 iterator()가 정의되어 있다. 즉, iterator() 메서드를 호출하면, Iterator 타입의 인스턴스가 반환된다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스를 구현한 클래스들은 iterator() 메서드를 사용할 수 있다. Iterator() 메서드 iterator() 메서드를 통해 만들어진 Iterator 인스턴스는 hasNext(), next(), remove() 등의 메서드..

[Java] 자바 ArrayList와 LinkedList의 차이 (어레이 리스트와 링크드 리스트의 차이)

ArrayList ArrayList의 데이터 추가를 하는 상황의 이미지이다. ArrayList에서 데이터를 추가 또는 삭제하기 위해서는 다른 데이터를 복사해서 이동해야 한다. ArrayList에 객체를 순차적으로 저장할 때는 저장된 객체를 이동시키지 않아도 되지만, 중간에 위치한 객체를 추가하거나 삭제할 때에는 데이터의 이동이 많이 일어나게 된다. 따라서, 추가 및 삭제에는 속도 저하가 일어나게 된다. 하지만, 인덱스의 주소 값을 얻기 위해서는 배열의 주소와 데이터 타입의 크기를 계산하여 접근하기 때문에 빠른 접근이 가능하다. 즉, ArrayList는 검색(읽기) 측면에서는 상대적으로 빠른 속도로 찾을 수 있다. ArrayList의 장점 데이터를 순차적으로 추가하거나 삭제하는 경우 빠른 처리가 가능하다...

[Java] 자바 LinkedList 클래스 개념 정리 및 활용

LinkedList LinkedList 컬렉션 클래스는 데이터를 효율적으로 추가, 삭제, 변경 등의 동작을 하기 위해 사용한다. LinkedList는 ArrayList와는 다르게 불연속적으로 존재하며, 데이터들은 서로 연결되어 있다. 그림과 같이 LinkedList의 각 요소(node)들은 자신과 연결된 이전 요소 또는 다음 요소의 주소 값과 데이터로 구성되어 있다. LinkedList에서 데이터 삭제는 삭제하고자 하는 노드의 이전 노드가 삭제하고자 하는 노드의 다음 노드를 참조하도록 변경하는 것으로 삭제한다. 즉, 연결된 링크를 끊어 다른 노드에 다시 연결하는 방식이다. LinkedList는 배열과 같이 데이터를 이동하기 위해 복사할 필요가 없어 처리 속도가 훨씬 빠르다. LinkedList에서의 데이..

[Java] 자바 ArrayList 클래스 개념 정리 및 활용

ArrayList ArrayList는 List 인터페이스를 구현한 클래스로 컬렉션 프레임워크에서 가장 많이 사용된다. 기능적으로는 Vector와 동일하지만, 기존의 Vector를 개선한 것으로 주로 ArrayList를 사용한다. ArrayList에 객체를 추가하면 객체가 인덱스로 관리된다는 점에서 배열과 유사하다. 그러나 배열은 생성될 때 크기가 고정되며, 크기를 변경할 수 없다. 하지만 ArrayList는 저장 용량을 초과하여 객체들이 추가되면, 자동으로 저장용량이 늘어나게 된다. 또한 List 자료구조의 특성을 이어받아 데이터가 연속적으로 존재하여 순서를 유지한다. ArrayList의 생성 List 객체이름 = new ArrayList(초기 저장 용량); ArrayList를 생성하기 위해서는 저장할 ..

[Java] 자바 List<E> 컬렉션 인터페이스 정리

List List 인터페이스는 배열과 같이 객체를 일렬로 늘어놓은 구조를 가지고 있다. 객체를 인덱스로 관리하여 객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제 등의 기능을 수행할 수 있다. List 인터페이스를 구현한 클래스는 ArrayList, Vector, LinkedList, Stack 등이 있다. List 인터페이스에서 사용 가능한 메서드는 컬렉션 인터페이스의 메서드와 함께 사용이 가능하다. add(int index, Object element) 주어진 인덱스에 객체를 추가하며 반환 값은 없다. addAll(int index, Collection c) 주어진 인덱스에 컬렉션을 추가하며 그 결과를 boolean 타입으로 반환한다. set(int index, Obje..

반응형