본문 바로가기

프로그래밍

(100)
Iterator와 Enumeration, ListIterator에 대해 Enumeration, Iterator, ListIterator- 컬렉션에 저장된 데이터에 접근하는데 사용되는 인터페이스들이다.- Enumeration은 컬렉션이 도입되기 전에 존재하던 Iterator 구버전이다. Iterator의 메소드- boolean hasNext()일거 올 요소가 남아있는지 확인해 있으면 true, 없으면 false를 반환한다.- Object next()다음 요소를 읽어온다. next()를 호출하기 전에 hasNext()를 호출해 읽어 올 데이터가 있는지 먼저 확인하는 것이 오류가 발생하지 않는 안전한 방법이다.- void remove()next()로 읽어 온 요소를 삭제한다. next()를 호출한 후 remove()를 호출해야 한다. 그렇지 않으면 예외가 발생하게 된다. 이 메소..
Stack과 Queue에 대해 Stack과 Queue- 단순하면서도 유용한 자료구조(Data Structure)이기 때문에 컴퓨터 시스템 전반에 다양하게 쓰이고 있다.- 스택과 큐를 구성하는 명령어가 get이나 put등이 아닌 push, pop, offer, pool인 이유는 이 두 자료구조는 자바가 개발되기 이전부터 쓰이던 방식이었기 때문에 다른 프로그래밍 언어에서도 쓰이던 명령어 형식을 따라서이다. 스택- LIFO(Last In First Out)의 후입 선출 방식 구조를 가지고 있다. 이것은 마지막에 저장된 것을 가장 먼저 꺼낸다는 의미이다.- 스택은 양 옆이 막혀있는 박스방식이어서 중간에 있는 데이터를 꺼내거나 중간에 데이터를 넣을 수 없고 마지막 데이터만 꺼내거나 넣을 수 있다.- 수식계산, 수식괄호검사, undo / red..
Collection framework에 대해 (3) ArrayList의 장점과 단점- 장점배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(Access time)이 짧다.- 단점크기를 변경할 수 없어 크기를 변경해야 할 때 새로운 배열을 생성 후 데이터를 복사하는 방식으로 크기를 변경해야 한다. 이러한 작업은 메모리 비용이 많이 들기 때문에 가급적이면 피해야 한다.크기 변경을 피하기 위해서 큰 배열을 생성하게 될 경우 메모리 낭비가 발생하게 된다.비순차적인 데이터의 추가 및 삭제에 시간이 오래 걸린다.데이터를 추가하거나 삭제하기 위해서 관련이 없는 다른 데이터들까지 이동시켜야 한다.순차적인 데이터를 추가(끝에 추가) 및 삭제(끝부터 삭제)하게 될 경우 속도가 빠르다. LinkedList-배열의 단점을 보완하기 위해 고안되었다.- LinkedList는 ..
Collection framework에 대해(2) Vector와 ArrayList - ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다고 할 수 있다.- Vector는 Collection framework가 도입되기 이전부터 존재하던 구버전이며, ArrayList는 framework가 도입된 후 생긴 클래스이다.- Vector는 자체적으로 동기화(멀티 스레드)처리가 되어 있으나 ArrayList는 그렇지 않다는 큰 차이가 있다. 하지만 싱글 스레드의 프로그램을 만들려고 할 때는 ArrayList가 더 효율적이라 할 수 있다.- Vector와 ArrayList 모두 List인터페이스를 구현하기 때문에 저장순서가 유지되며 중복을 허용하고 있다. 또한 데이터의 저장 공간으로 배열을 사용하는 배열 기반 클래스이다.- Arra..
Collections framework에 대해 (1) 출처 : Java의 정석(남궁성 저) 컬렉션 프레임워크(Collections Framework) 컬렉션- 여러 객체 데이터를 모아놓은 것이다.- Framework = 라이브러리(기능) + 프로그래밍 방식- 표준화되고 정형화된 체계적인 프로그래밍 방식이다. Collections Framework- 컬렉션(다수의 객체)을 다루기(저장, 삭제, 검색, 비교, 정렬) 위한 표준화된 프로그래밍 방식- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공한다.- JDK1.2부터 java.util패키지에 포함하여 제공되었다. Collection class- 여러 데이터를 저장할 수 있는 클래스(ex. Vector, ArrayList, HashSet) 컬렉션 프레임워크의 핵심 인터페이스- List, Set, Ma..
Hashset에 대해 참고 : https://www.youtube.com/watch?v=NEkxSTicSx8(남궁성 유튜브) HashSet과 TreeSet- TreeSet과 HashSet은 내부적으로 TreeMap을 이용하여 구현되어 있다.- 순서가 없으며 중복이 없다.- Set의 종류에는 루트에 Set이 있으며 두 갈래로 나뉘여 HashSet과 SortedSet이 있고, 각각 자식으로 LinkedHashSet과 TreeSet이 있다. HashSet- Set인터페이스를 구현한 대표적인 컬렉션 클래스- Hashing기법을 사용한다.- 순서를 유지하려면 LinkedHashSet클래스를 사용하면 된다. TreeSet- 범위 검색과 정렬에 유리한 컬렉션 클래스- HashSet보다 데이터 추가와 삭제에 시간이 더 걸린다. HashSe..
프로그래밍 독학 7일차
프로그래밍 언어론 독학 6일차 보호되어 있는 글입니다.