직접 구현하는 Set1 - MyHashSetV1Set은 중복을 허용하지 않고, 순서를 보장하지 않는 자료 구조이다. 문자열 해시 코드해시 코드와 해시 인덱스 자바의 hashCode()해시 인덱스를 사용하는 해시 자료 구조는 데이터 추가, 검색, 삭제의 성능이 O(1)로 매우 빠르다. 따라서 많은 곳에서 자주 사용된다. 그런데 앞서 학습한 것 처럼 해시 자료 구조를 사용하려면 정수로 된 숫자 값인 해시 코드가 필요하다. 자바에는 정수뿐만 아니라 String, double 등 많은 타입이 있으며 개발자가 정의한 사용자 정의 타입도 있다.이 모든 타입을 해시 자료 구조에 저장하려면 모든 객체가 숫자 해시 코드를 제공할 수 있어야 한다. Object.hashCode()자바는 모든 객체가 자신만의 해시 코드를 ..
리스트(List) vs 셋(Set)List (리스트)정의: 리스트는 요소들의 순차적인 컬렉션이다. 요소들은 특정 순서를 가지며, 같은 요소가 여러번 나타날 수 있다.특징:순서 유지: 리스트에 추가된 요소는 특정한 순서를 유지한다. 이 순서는 요소가 추가된 순서를 반영할 수 있다.중복 허용: 리스트는 동일한 값이나 객체의 중복을 허용한다.인덱스 접근: 리스트의 각 요소는 인덱스를 통해 접근할 수 있다. 용도: 순서가 중요하거나 중복된 요소를 허용해야 하는 경우 주로 사용된다. Set(셋)정의: 셋은 유일한 요소들의 컬렉션이다.특징:유일성: 셋에는 중복된 요소가 존재하지 않는다. 셋에 요소를 추가할 때, 이미 존재하는 요소면 무시된다.순서 미보장: 대부분의 셋 구현에서는 요소들의 순서를 보장하지 않는다. 즉..
리스트 추상화List 자료 구조순서가 있고, 중복을 허용하는 자료 구조를 리스트(List)라 한다. 인터페이스 도입 다형성과 추상화를 활용하면 클라이언트 코드를 변경하지 않고, 원하는 리스트 전략을 런타임에 지정할 수 있다. 의존관계 주입package collection.list;public class BatchProcessor { private final MyList list; public BatchProcessor(MyList list) { this.list = list; } public void logic(int size) { long startTime = System.currentTimeMillis(); for (int i = 0; i (..
노드와 연결낭비되는 메모리 없이 딱 필요한 만큼만 메모리르 ㄹ확보해서 사용하고, 또 앞이나 중간에 데이터를 추가하거나 삭제할 때도 효율적인 자료 구조가 있는데, 바로 노드를 만들고 각 노드를 서로 연결하는 방식이다. public class Node { Object item; Node next;}---------------------------------------------------public class NodeMain1 { public static void main(String[] args) { //노드 생성하고 연결하기: A-> B -> C Node first = new Node("A"); first.next = new Node("B"); ..
배열의 특징배열과 인덱스배열과 같이 여러 데이터(자료)를 구조화해서 다루는 것을 자료 구조라 한다.자바는 배열 뿐만 아니라, 컬렉션 프레임워크라는 이름으로 다양한 자료 구조를 제공한다. 배열의 특징배열에서 자료를 찾을 때 인덱스(index)를 사용하면 매우 빠르게 자료를 찾을 수 있다.인덱스를 통한 입력, 변경, 조회의 경우 한번의 계산으로 자료의 위치를 찾을 수 있다. 공식: 배열의 시작 참조 + (자료의 크기 * 인덱스 위치)배열에서 인덱스를 사용하는 경우 데이터가 아무리 많아도 한 번의 연산으로 필요한 위치를 찾을 수 있다. 배열의 검색배열에 들어있는 데이터를 찾는 것을 검색이라 한다.배열의 순차 검색은 배열에 데이터가의 크기만큼 연산이 필요하다. 배열의 크기가 n이면 연산도 n만큼 필요하다. ..