본문 바로가기

Java

(63)
[Java] HashMap 키와 값 목차HashMap 과 TreeMapHashMap의 키(key)와 값(value)해싱(hashing) 기법해시테이블에서 저장된 데이터를 가져오는 과정HashMap 주요 메서드HashMap 예제  HashMap 과 Hashtable - 순서X, 중복(키X, 값O)Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장(Key, value)HashMap(동기화 X)은 Hashtable(동기화 O)의 new버전     HashMapMap 인터페이스를 구현한 대표적인 컬렉션 클래스순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다.  TreeMap범위 검색과 정렬에 유리한 컬렉션 클래스HashMap보다 데이터 추가, 삭제에 시간이 더 걸림(비교를 한 후 저장)  HashMap의 키(key)와 값..
[Java] TreeSet 범위 탐색, 정렬 목차TreeSet의 특징이진 탐색 트리의 특징TreeSet 데이터 저장과정TreeSet 예제 TreeSet - 범위 탐색, 정렬이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리(from ~to)이진 트리는 모든 노드가 최대 2(0 ~ 2)개의 하위 노드를 갖음.각 요소(node)가 나무(tree) 형태로 연결(LinkedList의 변형)    class TreeNode { TreeNode left; // 왼쪽 자식노드 Object element; // 저장할 객체(데이터를 저장) TreeNode right; // 오른쪽 자식노드}   이진 트리의 종류 이진 탐색 트리(binary search tree)부모보다 작은 값은 왼쪽 큰 값은 오른쪽에 저장트리가..
[Java] HashSet 객체 중복제거, 집합 목차set의 구현클래스HashSet과 TreeSetHashSet의 주요 메서드HashSet 예제  Set - 순서X, 중복X대표적인 구현 클래스: HashSet, TreeSet      HashSetSet 인터페이스를 구현한 대표적인 컬렉션 클래스순서를 유지하려면, LinkedHashSet   TreeSet범위 검색과 정렬에 유리한 컬렉션 클래스HashSet 보다 데이터 추가, 삭제에 시간이 더 걸림(데이터가 많을수록)   HashSet  주요 메서드 HashSet( ): 생성자HashSet(Collection c): 컬렉션의 모든 객체 저장HashSet(int initialCapacity): 초기용량HashSet(int initialCapacity, float loadFactor): 초기용량, 언제 늘..
[Java] Comparator와 Comparable 객체 정렬 Comparator와 Comparable객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스compare( )와 compareTo( )는 두 객체의 비교결과를 반환하도록 작성같으면 0, 오른쪽이 크면 음수, 왼쪽이 크면 양수public interface Comparable { int compareTo(Object o); // 주어진 객체(o)를 자신과 비교}public interface Comparator { int compare(Object o1, Object o2); // o1, o2 두 객체를 비교 boolean equals(Object obj); // euquals를 오버라이딩 하라는 뜻} Comparable 기본 정렬 기준을 구현하는데 사용(디폴트)  Comparator..
[Java] Arrays - 배열을 쉽게 다루고 싶다면 Arrays 배열을 다루기 편리한 메서드(static) 제공 배열의 출력toString( ): 오버라이딩 된 형식으로 배열을 출력해준다(ex. [1, 2, 3, 4, 5] ) 배열의 복사copyOf( ): 정해진 개수만큼 배열을 복사해준다.copyOfRange( ): 정해진 범위까지 복사해준다.(from  배열 채우기fill( ): 배열을 원하는 값으로 채운다.setAll( ): 난수로 배열을 원하는 값으로 채운다.(람다식 사용) 배열의 정렬과 검색sort( ): 배열을 정렬한다.binarySearch( ): 이진 탐색(정렬되어 있을 때만 사용) 다차원 배열 출력deepToString( ): 다차원 배열의 출력 다차원 배열의 비교deepEquals( ): 다차원 배열의 비교 배열을 List로 변환 asL..
[Java] Iterator, Listlterator, Enumeration 목차Iterator, Listlterator, EnumerationIterator 쓰는 이유Iterator의 장점Iterator의 메서드Iterator의 사용방법Iterator 예제Map과 Iterator의 관계  Iterator, Listlterator, Enumeration컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스핵심은 hasNext(확인)와 next(읽기) 메서드 Enumeration은 Iterator의 구버전Listlterator는 Iterator의 접근성을 향상시킨 것 (단방향 => 양방향) - previous( )  Iterator를 쓰는 이유컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것컬렉션 마다 생긴 것(구조)이 달라서 요소를 읽어오는 방법이 다른데 그것을 표준화 한 것..
[Java] Stack과 Queue 목차Stack과 QueueStack과 Queue 메서드Stack과 Queue의 활용예제 Stack과 Queue스택(Stack): LIFO(Last in First Out)구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다.push(저장)pop(추출)큐(Queue): FIFO(First in First)구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다.offer(저장)poll(추출)스택을 구현하려면 배열, 큐를 구현하기에는 링크드 리스트가 효율적이다. 스택 클래스의 메서드Stack stack = new Stack();   큐 인터페이스의 메서드Queue que = new LinkedList();    큐를 구현한 클래스 찾기큐는 인터페이스이기 때문에 큐를 구현한 적절한 클래스를 찾아서 객체를 만들면 된..
[Java] LinkedList 특징 목차배열의 장단점LinkedList 특징LinkedList 종류ArrayList vs LinkedList 성능비교 배열의 장단점 장점배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다.놀랍게도 배열의 첫 번째 요소를 읽는 시간과 마지막 요소를 읽는 시간은 똑같다.인덱스가 n인 데이터의 주소 = 배열의 주소 + n * 데이터의 크기  단점1. 크기를 변경할 수 없다.크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야 함.그렇다고 크기의 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨.더 큰 배열을 만든다.기존 내용 복사참조를 변경해야 한다.2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.배열 중간에 있는 데이터를 추가, ..
[Java] 컬렉션 프레임워크, ArrayList 목차컬렉션 프레임워크란 무엇일까?컬렉션 프레임워크의 핵심 인터페이스, 특징컬렉션 인터페이스의 메서드ArrayList의 메서드ArrayList 예제ArrayList에 저장된 객체의 삭제과정(배열 복사 문제) 컬렉션(collection) 여러 객체(데이터)를 모아 놓은 것을 의미  프레임워크(framework)표준화, 정형화된 체계적인 프로그래밍 방식라이브러리 + 표준화된 프로그래밍 방식제한적이지만 생산성이 높아지고 유지보수가 쉬워짐표준화 되지 않으면 다른 사람이 짜놓은 코드를 다른 사람이 보기 어렵다.  컬렉션 프레임워크컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공(저장, 삭제, 검색, 정렬)많은 수의 데이터(다수의 객체)를 다루는데 ..
[Java] Arrays로 배열 다루기 문자열 비교와 출력 - equals( ), toString( )int[] arr = {0, 1, 2, 3, 4};int[][] arr2D = {{11, 12}, {21, 22}};System.out.println(java.util.Arrays.toString(arr)); // 배열System.out.println(java.util.Arrays.deepToString(arr2D)); // 2차원 배열[0, 1, 2, 3, 4][[11, 12], [21, 22]] String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};String[][] str2D2 = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};Sys..