목록Java (181)
충분히 쌓여가는
Iterator, ListIterator, Enumeration 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 Enumeration은 Iterator의 구버전 ListIterator은 Iterator의 접근성을 향상시킨 것(단방향[Iterator] -> 양방향[ListIterator]) Iterator 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다 Iterator it = list.iterator(); // Iterator 객체 반환 while(it.hasNext()) { // boolean has..
Stack LIFO(Last in Frist out)구조 마지막에 저장된 것을 제일 먼저 꺼내게 된다 배열로 구현하는 것이 좋다 Stack st = new Stack(); Stack 메서드 메서드 설명 boolean empty() Stack가 비어있는지 알려준다 Object peek() Stack의 맨 위에 저장된 객체를 반환 pop()와 달리 Stack에서 객체를 꺼내지는 않는다 (비었을 때는 EmptyStackException 발생) Object pop() Stack의 맨 위에 저장된 객체를 꺼낸다 (비었을 때는 EmptyStack Exception 발생) Object push(Object item) Stack에 객체(item)을 저장한다 int search(Object o) Stack에서 주어진 객..
배열의 장점 배열은 구조가 간단하고 데이터를 읽는데 걸리는 시간(access time)이 짧다 연속적이다 배열의 단점 1. 크기를 변경할 수 없다 크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야 한다 배열의 사이즈를 늘리고 싶다면 더 큰 배열을 생성해야 한다(예시 링크) [더 큰 배열 생성 -> 내용 복사 -> 참조 변경] 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비된다 2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다 데이터를 추가하거나 삭제하기 위해, 다른 데이터를 옮겨야 한다 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다 LinkedList - 배열의 단점 보완 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터..
ArrayList 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다 ArrayList와 달리 Vector은 자체적으로 동기화 처리가 되어 있다 List 인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다 데이터의 저장공간으로 배열을 사용한다(배열기반) Vector 클래스의 source Object[]: 객체 배열로 다형성 때문에 모든 종류의 객체를 저장 가능하다 public class Vector extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { ... protected Object[] elementData; // 객체를 담기위한 배열 ... ArrayList의 메서드 코드 A..