본문 바로가기

전체 글44

Java - HashSet, LinkedHashSet, TreeSet 차이 Set 이번 시간에는 Java Collection 중에서 Set에 대해서 알아보도록하겠다. Set은 Array와 비슷하게 배열이지만 중복을 허락하지 않는다는 특징이 있다. Set은 사실 Map을 사용해서 구현된 자료구조이다. Map은 Key 값을 중복되지 않게 관리하는 특징이 있다. Set은 이러한 Map의 특징을 사용해서 값을 넣을 때는 Map에 집어 넣고 Map의 Key 값만 사용함으로써 중복되지 않는 배열을 제공하는 것이다. Map의 Value 값에는 미리 지정된 하나의 객체를 저장한다. Set이 Map이나 Array처럼 새로운 구조가 아니라 Map을 사용한 파생된 자료구조라는 것이다. 그렇기 때문에 Java에서는 Set이라는 자료구조를 기본적으로 제공하지만 GoLang 같은 경우에는 Map을 사.. 2022. 7. 31.
Java - HashTable이란? Java의 데이터구조에서는 이름에 Hash가 붙은 클래스들이 있다. 예를 들면 HashMap, HashSet 등이 있다. Hash가 들어간 클래스들은 모두 HashCode를 사용해서 구현한 데이터구조이다. HashMap, HashSet을 사용하는 방법은 잘 알고 있는데 어떻게 작동하는지에 대해서도 알아보자. Java에서 Hash를 사용한 자료구조들을 이해하기 위해서는 HashTable에 대해서 알아야하는데 HashTable에 대해서 간략하게 알아보도록하자. HashTable HashTable은 위의 사진과 같이 도식화할 수 있다. 그림을 보면 key를 Hash함수에 넣는 것을 확인할 수 있는데, Hash라는 것은 어떤 입력을 넣으면 암호화해서 어떠한 값으로 바꿔주는 기능이다. A라는 키를 Hash 함수에.. 2022. 7. 30.
Java - HashMap, LinkedHashMap, TreeMap 차이 Map이란? 지난 시간에는 List들에 대해서 알아보았다. 오늘은 Collection 중에 Map에 대해서 알아보도록하겠다. Map은 Key: Value 쌍으로 정의되는 자료구조이다. 예를 들면 { a: 1, b: 2 } 와 같은 형식으로 만들어진다. key는 보통 string이 사용되고 value에는 어떤 값이든 상관없이 사용할 수 있다. Java에서는 Map에 추가, 수정은 put() 함수, 읽기는 get() 함수를 사용한다. Map에 들어있는 원소들은 Entry라고 불리는데 EntrySet()이라는 함수를 사용하면 원소들의 Set을 얻어서 loop를 돌릴 수도 있다. Map은 키값이 유니크한 특징을 가지고 있어서 중복되지 않게 값을 덮어씌우거나 컨트롤 할 수 있다. Java에서는 3가지의 Map .. 2022. 7. 29.
Java - ArrayList, LinkedList, Vector 차이 지난 포스팅에서 Array는 읽기는 좋지만 추가, 삭제 사이즈를 변경하는 연산이 상대적으로 비용이 비싸다는 것을 확인했다. 이런 단점을 보완하기 위해서 자바에서는 ArrayList, Vector, LinkedList라는 자료구조를 제공한다. 3개의 자료구조는 모두 List 인터페이스를 implement한 구현체이다. 겉으로 보기에는 List가 모두 같아보인다. 또 주로 사용하는 데이터구조는 ArrayList가 아닐까 싶다. 실무에서 사용하는 비중으로는 ArrayList 95%, LinkedList 5% 정도라고 생각된다. 이제 각각의 자료 구조의 특징에 대해서 알아보도록하자 ArrayList 가장 많이 쓰이는 자료구조이다. ArrayList는 이름에서도 알 수 있듯이 Array와 List의 장점만을 짬.. 2022. 7. 28.