본문 바로가기

Programming language/Java

(30)
[JAVA] HashMap HashMap과 Hashtable Map 인터페이스를 구현, 데이터를 키와 값의 쌍으로 저장 HashMap(동기화 x) 은 Hashtable(동기화 o)의 신버전 HashMap Map 인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다. TreeMap 범위 검새과 정렬에 유리한 컬렉션 클래스 HashMap 보다 데이터 추가, 삭제에 시간이 더 걸림 HashMap의 키(key)와 값(value) 해싱(hashing) 기법으로 데이터를 저장. 데이터가 많아도 검색이 빠르다. Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장. 키(key) - 컬렉션 내의 키(key) 중에서 유일해야 한다. 값(value) - 키(key)와 달리 데이터의 중복..
[JAVA] TreeSet TreeSet 1. 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리. 2. 이진트리(binary tree)는 모든 노드가 최대 2개의 하위 노드를 가짐 3. 각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형) 이진 탐색 트리(binary search tree) 1. 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장하는 이진트리 2. 단점 : 데이터가 많아질수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가) 데이터 저장과정 boolean add(Object obj) 1. HashSet 은 equals(), hashCode()로 비교 2. TreeSet 은 compare()를 호출해서 비교 3. 루트부터 트리를 따라 내려가며 값을 비교, 작으..
[JAVA] Iterator Iterator 1. 컬렉션에 저장된 데이터를 접근하는 데 사용되는 인터페이스 2. 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 3. 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 Map과 Iterator 1. Map에는 iterator()가 없다.(List, Set은 Collection의 자손이다.) 2. keySet(), entrySet(), values()를 호출해야 한다. package org.example.ch11; import java.util.*; public class Ch11_22_23_24 { public static void main(String[] args) { // ArrayList list = new ArrayList(); // Co..
[JAVA] ArrayList&LinkedList ArrayList 1. 데이터가 연속적이고 데이터를 읽는 데 걸리는 시간(접근 시간)이 짧다. 2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다. LinkedList 1. 배열과 달리 링크드 리스트는 불연속적으로 존재하는 데이터를 연결(link) 2. 요소 하나하나가 연결돼 있고 요소를 노드라고 부르고 노드에는 데이터와 다음 노드의 참조변수가 있다 3. 데이터의 삭제 : 단 한 번의 참조변경만으로 가능 4. 데이터의 추가 : 한 번의 Node 객체생성과 두 번의 참조변경만으로 가능 ->변경에 유리함 + 참고 링크드 리스트 - 연결리스트. 데이터 접근성이 나쁨 불연속적이라 한 번에 이동 불가(노드가 바로 다음 노드만 알고 있..
[JAVA] Array&ArrayList Array, ArrayList의 공통점 1. 데이터를 묶어서 그룹으로 사용하고 싶을 때 사용한다. 2. 저장 순서가 있고 중복을 허용한다. Array, ArrayList의 차이점 1. array는 기본 타입 또는 객체를 저장할 수 있지만 ArrayList는 객체만 저장이 가능하다. 2. Array는 같은 type의 데이터만 담을 수 있고 ArrayList는 다른 타입의 데이터를 담을 수 있다. 그렇지만 일반적으로 안정성을 위해 ArrayList도 제네릭스를 사용하여 같은 타입의 데이터만 담을 수 있게 만든다. 3. Array는 정적인 크기를 가지고 ArrayList는 동적인 크기를 가진다. 4. 내용을 읽을 때 Array는 [] 안에 인덱스를 넣어 접근하고 ArrayList는 get() 메서드 안에 인덱..
[JAVA] 문자열과 기본형의 변환 package org.example.ch09; public class Ch9_12_13_14 { public static void main(String[] args) { // join() 은 여러 문자열 사이에 구분자를 넣어서 결합한다. String animals = "dog,cat,bear"; String[] arr = animals.split(","); String str = String.join("-",arr); System.out.println(str); // dog-cat-bear // 숫자를 문자열로 바꾸는 방법 int i = 100; String str1 = i + ""; // 방법1 String str2 = String.valueOf(i); // 방법2 // 문자열을 숫자로 바꾸는 방법 i..
[JAVA] 컬렉션 프레임워크 컬렉션(collection) - 모아놓은 것 여러 객체(데이터)를 모아 놓은 것을 의미 라이브러리(library) - 도서관 - 책(정보) 미리 만들어 놓은 기능을 모아 놓은 것 프레임워크(framework) - 틀 작업 표준화, 정형화된 체계적인 프로그래밍 방식 라이브 러리 + 프로그래밍 방식 컬렉션 프레임워크(collections framework) 1. 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 2. 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공 java.util 패키지에 포함. jdk1.2부터 제공 컬렉션 클래스 다수의 데이터를 저장할 수 있는 클래스 컬렉션 프레임웍의 핵심 인터페이스 1. List 2. Set 3. Map List - 순서가 있는 데이터의 집합, 데..
[JAVA] 오토박싱&언박싱 jdk 1.5 이전에는 기본형과 참조형간의 연산이 불가능 기본형의 값을 객체로 자동변환하는 것을 오토박싱, 그 반대는 언박싱 import java.util.ArrayList; public class Ch9_28_29_30_31 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(10); // 오토 박싱 -> new Integer(10) // jd1.5이전에는 에러 int value = list.get(0); // 언박싱 new Integer(10) -> 10 // list 에는 객체만 저장 가능 // 컴파일러가 자동변환해줌 } }