Java 길찾기 썸네일형 리스트형 [Java] 컬렉션 프레임워크 - HashMap, Hashtable Hashtable과 HashMap의 관계는 Vector와 ArrayList의 관계와 같아서 Hashtable보다는 새로운 버전인 HashMap을 사용할 것을 권한다. 여기서는 HashMap에 대해서만 설명하겠다. HashMap은 Map의 특징, 키와 값을 묶어서 하나의 데이터로 저장한다는 특징을 갖는다. 그리고 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보인다. HashMap이 데이터를 어떻게 저장하는지 확인하기 위해 실제 소스의 일부를 발췌하였다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { transient Entry[] table; ... static class E.. 더보기 [Java] 컬렉션 프레임워크 - HashSet HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션 이며, Set인터페이스의 특징대로 HashSet은 중복된 요소를 저장하지 않는다. HashSet에 새로운 요소를 추가할 때는 add메서드나 addAll메서드를 사용하는데, 만일 HashSet에 이미 저장되어 있는 요소와 중복된 요소를 추가하고자 한다면 이 메서드들은 false를 반환함으로써 중복된 요소이기 때문에 추가에 실패했음을 알린다. 이러한 HashSet의 특징을 이용하면, 컬렉션 내의 중복 요소들을 쉽게 제거할 수 있다. 생성자 또는 메서드 설명 HashSet() HashSet객체를 생성한다. HashSet(Collection c) 주어진 컬렉션을 포함하는 HashSet객체를 생성한다. HashSet(int initialCapacity.. 더보기 [Java] 컬렉션 프레임워크 - TreeSet TreeSet은 이진 검색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진 검색 트리는 정렬, 검색, 범위검색(range search)에 높은 성능을 보이는 자료구조이며 TreeSet은 이진 검색 트리의 성능을 향상시킨 '레드-블랙 트리(Red-Black tree)'로 구현되어 있다. Set인터페이스이므로 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지도 않는다. 이진 트리(binary tree)는 링크드리스트처럼 여러 개의 노드(node)가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결할 수 있으며 '루트(root)'라고 불리는 하나의 노드에서부터 시작해서 계속 확장해 나갈 수 있다. 위 아래로 연결.. 더보기 [Java] 컬렉션 프레임워크 - Iterator Iterator 컬렉션 프레임워크에서는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화하였다. 컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의하고, Collection인터페이스에는 'Iterator(Iterator를 구현한 클래스의 인스턴스)'를 반환하는 iterator()를 정의하고 있다. public interface Iterator { boolean hasNext(); Object next(); void remove(); } public interface Collection { ... public Iterator iterator(); ... } iterator()는 Collection인터페이스에 정의된 메서드이므로 Collection인터페이스의 자손인 List와 Se.. 더보기 [Java] 컬렉션 프레임워크 - Stack과 Queue 자바에서 제공하는 Stack과 Queue에 대해서 알아보기 이전에 스택(Stack)과 큐(Queue)의 기본 개념과 특징에 대해서 먼저 살펴보도록 하자. 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(Last In First Out)구조로 되어 있고, 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있다. 쉽게 얘기하자면 스택은 동전통과 같은 구조로 양 옆과 바닥이 막혀 있어서 한 방향으로만 뺄 수 있는 구조이고, 큐는 양 옆만 막혀 있고 위아래로 뚫려 있어서 한 방향으로는 넣고 한 방향으로는 빼는 파이프와 같은 구조로 되어 있다. 예를 들어 스택에 0, 1, 2 순서로 데이터를 넣었다면 꺼낼 때는 2, 1, 0의 순서로 꺼내게.. 더보기 [Java] 커맨드 라인을 통해 입력받기 Scanner클래스의 nextLine()외에도 화면을 통해 사용자로부터 값을 입력받을 수 있는 방법이 있다. 바로 커맨드라인을 이용한 방법인데, 프로그램을 실행할 때 클래스 이름 뒤에 공백문자로 구분하여 여러 개의 문자열을 프로그램에 전달 할 수 있다. 만일 실행할 프로그램의 main메서드가 담긴 클래스의 이름이 MainTest라고 가정하면 다음과 같이 실행할 수 있을 것이다. 더보기 c:\jdk1.8\work\ch5>java MainTest abc123 커맨드라인을 통해 입력된 두 문자열은 String배열에 담겨서 MainTest클래스의 main메서드의 매개변수(args)에 전달된다. 그리고는 main메서드 내에서 args[0], args[1]과 같은 방식으로 커맨드라인으로부터 전달받은 문자열에 접근할.. 더보기 [Java] 화면에서 입력받기 - Scanner 지금까지는 화면에 출력만 해왔는데, 이제 화면으로부터 입력받는 방법에 대해서 얘기해보자. 자바에서 화면으로 부터 입력받는 방법은 여러 가지가 있으며, 점점 간단하고 편리한 방향으로 발전해왔다. Scanner 클래스를 이용해서 화면으로부터 입력받는 방법을 알아보자. 먼저 Scanner클래스를 사용하려면, 아래와 같은 한 문장을 소스코드의 맨 위쪽에 추가해줘야 한다. import java.util.*; 그 다음엔 Scanner클래스의 객체를 생성한다. Scanner scanner = new Scanner(System.in); 그리고 nextLine()이라는 메서드를 호출하면, 입력대기 상태에 있다가 입력을 마치고 '엔터키(Enter)'를 누르면 입력한 내용이 문자열로 반환된다. Strnig input = s.. 더보기 [Java] 자주 발생하는 에러와 해결 방법 자바로 프로그래밍을 배워나가면서 많은 수의 크고 작은 에러들을 접하게 될 것이다. 대부분의 에러는 작은 실수에서 비록된 것들이며, 곧 익숙해져서 쉽게 대응할 수 있을 것이다. 하지만, 처음 배울 때는 작은 실수 하나 때문에 많은 시간을 허비하곤 한다. 그래서 자주 발생하는 기본적인 에러와 해결방법을 간단히 정리하였다. 에러가 발생하였을 때 참고하고, 그 외의 에러는 에러메시지의 일부를 검색해서 찾아보면 해결책을 얻는데 도움이 될 것이다. 1. cannot find symbol 또는 cannot resolve symbol 지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자를 구분하기 때문에 철.. 더보기 이전 1 2 3 4 5 6 7 ··· 16 다음