728x90
반응형
728x90
반응형
HashMap Map인터페이스를 구현한 클래스, 데이터를 키, 그리고 값으로 저장. Set과 동일하게 중복을 허용하지 않지만, 값(value)에 한해서 중복을 허용한다. 만약 순서를 정렬하고 싶다면 LinkedHashMap클래스를 사용한다. *TreeMap은 TreeSet과 동일한 기능이며 Map을 구현한 클래스라는 점에만 차이가 있다. TreeSet과 동일하게 데이터 삭제, 추가에 시간이 더 소요된다. HashMap의 특징 해싱(hashing)기법으로 데이터를 저장하기 때문에 데이터의 검색이 빠르다 해쉬(hash)함수를 사용하여 저장위치(index)를 지정하여 저장하고, 그 데이터를 불러올 때는 hash table에 접근하여 그 데이터를 가져온다. 접근성, 즉 hash를 사용하여 데이터를 카테고리화 시..
TreeSet 이진 탐색 트리로 구현되어 있고 범위탐색과 정렬에 유리함 이진 트리는 각각의 노드가 최대 0~2개의 노드를 가질 수 있음 각각의 노드 중 작은 값은 부모의 왼쪽, 큰 값은 부모의 오른쪽에 저장된다. 이 때문에 값을 추가하거나 삭제할 때 비교시간이 더 걸리게 된다. 값이 작으면 왼쪽, 크면 오른쪽에 저장되기 때문에 새로운 값이 들어가거나 기존의 값이 없어지게되면 값을 새롭게 비교해야되므로 시간적으로 효율이 떨어짐 TreeSet의 저장과정 다른 Set클래스들과 동일하게 add()를 사용 수정용 TreeSet의 메서드 본 HashSet과 달리 TreeSet은 정렬이 필요없다. 출력문: [4, 5, 7, 9] Set set = new TreeSet(); set.add(5); set.add(4); ..
HashSet Set인터페이스를 상속받아 메서드를 구현한 대표적인 Collection 클래스 Set인터페이스는 중복을 허용하지 않고 순서를 고려하지 않는다. HashSet은 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인하여 중복이면 제거, 중복이 아니면 추가한다. 따라서 객체의 값이 같은지 확인하기 위해 equals와 hashcode를 오버라이딩 해주어야 값을 비교하여 조건부로 값을 저장한다 만약 데이터 정렬의 순서를 고려하고싶다면 LinkedHashSet클래스를 사용 메서드 이름 기능 HashSet(int initialCapacity) 초기용량 설정 add() 객체 데이터 추가 addAll(Collection c) Collection 데이터 추가 remove() 객체 데이터 제거 removeAl..
Arrays 메서드 배열의 관리를 위한 메서드들 toString copyOf copyOfRange setAll fill sort binarySearch deeptoString deepEquals 자세한 설명은 아래 주석 참고 int[] arr = {0,1,2,3,4}; int[] arr2 = Arrays.copyOf(arr, 4); System.out.println(Arrays.toString(arr2)); //항상 from ~ to의 형식이기 때문에 0,1,2,3까지만 출력된다 //[0, 1, 2, 3] int[] arr3 = Arrays.copyOfRange(arr, 1, 4); System.out.println(Arrays.toString(arr3)); //from ~ to이기 때문에 1,2,3까지..
Iterator Collection의 데이터를 보다 쉽게 관리하기 편하게 만든 표준화 클래스이다. Iterator의 메서드는 hasNext(), next()만 존재하기 때문에 Collection을 사용하여 객체데이터를 저장한 값을 받아서 관리하기 용이하다. 코드설명 1. 다형성을 이용하여 Collection의 메서드만 사용하는 ArrayList를 선언한다. 2. Collection의 add메서드를 사용하여 javaclass라는 객체 데이터를 저장한 후 3. 그 저장된 데이터값을 iterator로 저장한다. 저장 시 Collection의 데이터를 받아오는 것이기 때문에, new로 선언하지 않고 참조변수인 c.Iterator()로 선언 4. 저장된 객체정보를 hasNext와 next로 데이터 끝까지 읽어온다..
Stack push & pop, 저장, 추출의 관계이고 LIFO(Last in First Out, 마지막으로 저장한 것이 제일 먼저 추출) 형식이다. 순차적으로 저장하고 마지막으로 저장된 객체를 불러오기 때문에 배열[]을 쓰는 것이 제일 적합하다. Stack의 메서드 종류 데이터를 추출할 때(pop) 맨위의 값을 지우는데 지우지 않고 값만 보기위해서는 peek를 사용해야 한다. *메서드에 다른 list 클래스와 동일하게 remove(index)도 존재 *push대신 add도 사용가능 Queue offer & poll, 저장, 추출의 관계이고 FIFO(FIst in First Out, 첫번째로 저장한 것이 제일 먼저 추출) 형식이다. 먼저 저장한 것이 먼저 추출되기 때문에 데이터의 복사를 해야하는 Arra..
LinkedList 일반 배열 장점: 구조가 간단하고 데이터를 읽는데 걸리는 시간이 짧다. 단점: 크기 변경이 불가능하기때문에 새로운 배열을 생성하고 기존내용을 그 배열로 복사해야한다. 단점2: 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. 데이터를 추가하거나 삭제하면 나머지 데이터를 복사하여 움직이는 시간때문. 비순차적인 데이터 삭제 시: remove함수를 사용하여 index를 뒤에서부터 지정하고 데이터를 옮기는 작업을 생략 LinkedList는 위의 단점들을 보완하여 나온 클래스 배열이 연속적으로 존재하는 데이터를 연결한 집합이라면, LinkedList는 불연속적으로 존재하는 데이터를 연결한 집합. 따라서 배열은 한 데이터를 추가하려면 모든 데이터를 옮겨야 가능하지만, LinkedList는 ..
Collection Framework 정의: Collection: 여러 객체(데이터)를 모아 놓은 것을 의미 Framework: 표준화, 정형화된 체계적인 프로그래밍 방식 개인의 코딩 방식이 아닌 기준을 정한 코딩으로 다른 사람이 이해하고 수정하기 편하게 하기 위한 정형화 대표적인 예시로 Spring Framework가 있음 Collection Framework: 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 컬렉션(다수의 데이터)을 다룰 수 있는 다양한 클래스를 제공 핵심 인터페이스(interface) 메서드: 데이터를 정리하기 위한 핵심 인터페이스: List, Set, Map List: 순서가 있는 데이터의 집합이고 중복을 허용한다 대표적인 예로 식당의 웨이팅 리스트, 누가 먼저 왔는지..