배열 관련
13 Apr 2018ArrayList 특징 (처리하는 데이터의 갯수가 변하지 않는 경우 사용)
① 자료의 내부적인 자동 동기화 기능이 없다.
② 내부적으로 자료를 배열구조로 가지고 있는 객체로 데이터의 추가/삭제를 위해 내부적 임시배열을 작성 후 데이터를 복사하는 방법을 사용한다.
③ 레퍼런스 타입의 데이터만 저장할 수 있다.
④ 데이터 내용의 중복이 가능하다. null값을 허용한다.
⑤ 단점 : 대량의 자료를 추가/삭제하는 경우에 내부적인 처리량이 늘어나서 상당한 성능저하를 가져온다.
⑥ 장점 : 각 데이터의 인덱스를 가지고 있기 때문에, 필요한 데이터의 접근이 한번만에 가능하다. 많은 데이터를 한 번에 다 가져와서 여러번 참조해 쓸 때 최상의 성능을 나타낸다.
(3) 이용
① add 메서드 : 데이터 추가 ( 예 : list.add(“포도”)’; )
② get 메서드 : 데이터를 가져오는 것 ( 예 : String str = list.get(2); )
③ size 메서드 : 데이터의 수를 알아내는 것 ( 예 : int num = list.size(); )
- ArrayList 데이터를 삽입/ 수정/ 삭제하는 방법
(1) add : 데이터 삽입 ( 예 : list.add(2,”키위”); )
(2) set : 데이터 수정 ( 예 : list.set(0, “오렌지”); )
(3) remove : 데이터 삭제 ( 예 : list.remove(1); )
- ArrayList 데이터를 검색하는 방법
(1) indexOf : 검색할 데이터와 똑같은 값의 데이터를 파라미터로 넘겨주면 리스트에서 똑같은 값을 갖는 첫번째 데이터를 찾아서 그 위치의 인덱스를 리턴한다. ( 예 : int index = list.indexOf(“사과”); )
LinkedList 특징 (처리하는 데이터의 갯수가 변하는 경우 사용)
① 다음에 나올 자료의 위치정보만 가지고 있고, 내부적인 인덱스는 가지고 있지 않다.
② 단점 : 데이터가 많은 경우의 검색 시 처음 자료로 부터 순차적으로 찾아 나가야하기 떄문에 성능이 저하된다.
③ 장점 : 데이터의 추가/삭제는 위치정보의 수정만으로 가능하기 때문에 정보의 추가/삭제 처리가 필요할 때 유용하다.
(3) 이용
① add 메서드 : 데이터 추가 ( 예 : list.add(“포도”)’; )
② get 메서드 : 데이터를 검색 ( 예 : String str = list.get(2); )
③ size 메서드 : 데이터의 수를 알아내는 것 ( 예 : int num = list.size(); )
- LinkedList 데이터를 삽입/ 수정/ 삭제하는 방법
(1) add : 데이터 삽입 ( 예 : list.add(2,”키위”); )
(2) set : 데이터 수정 ( 예 : list.set(0, “오렌지”); )
(3) remove : 데이터 삭제 ( 예 : list.remove(1); )
- LinkedList 데이터의 순차 접근
(1) Iterator : Iterator 타입의 객체를 리턴하는 메서드
Iterator<String> iterator = list.iterator();
(2) next : next라는 메서드를 호출해서 LinkedList의 데이터를 순서대로 읽어올수 있다. Iterator를 통해 데이터를 읽어오는 메서드
String str = iterator.next();
- LinkedList 스택/ 큐로 사용하는 방법
(1) 스택(stack) : 리스트처럼 일차원적으로 데이터를 저장하는 자료구조로 가장 나중에 넣었던 데이터를 가장 먼저 꺼내는 LIFO
방식을 사용한다.
LinkedList <String> stack = new LinkedList<String>();
① addLast : 스택의아래쪽으로 부터 순서대로 저장 ( 예 : list.addLast(new Integer(12); )
② removeLast : 스택의 제일 위에 있는 데이터를 가져오면서 스택에 데이터를 제거 ( 예 : Integer obj = removeLast(); )
③ getLast : 스택의 제일 위에 있는 데이터를 가져오면서 스택에 데이터를 제거하지 않는다. ( 예 : Integer obj = getLast(); )
(2) 큐( queue) : 가장 처음 넣었던 데이터를 가장 먼저 꺼내는 FIFO 입출력 방식을 사용한다.
LinkedList <String> queue = new LinkedList<String>();
① offer : 파라미터로 넘겨준 데이터를 큐에 저장( 예 : queue.offer("토끼"); )
② poll : 큐에 저장된 데이터 중 제일 앞에 있는 데이터를 가져오면서 큐에 데이터를 제거한다.( 예 : str = queue.poll(); )
③ peek: 큐에 저장된 데이터 중 제일 앞에 있는 데이터를 가져오면서 큐에 데이터를 제거하지 않는다.
( 예 : str = queue.peekt(); )