본문 바로가기

자바공부

LinkedList, Collections 클래스 활용, 자바 명품 프로그래밍 7장

728x90
반응형

* LinkedList는 요소들을 양방향으로 연결하여 관리한다는 점을 제외하고 Vector, ArrayList와 거의 같다.

LinkedList는 맨 앞과 맨 뒤를 가리키는 head, tail 레퍼런스를 가지고 있어, 맨 앞이나 맨 뒤, 중간에 요소의 삽입이 가능하며 인덱스를 이용하여 요소에 접근할 수 도 있다.

LinkedList<String>의 내부 구성과 add(), get() 메소드

* Collections 클래스는 유용한 여러 메소드를 지원한다.

sort() - 컬렉션에 포함된 요소들의 정렬

reverse() - 요소를 반대 순으로 정렬

max(), min() - 요소들의 최댓값과 최솟값 찾아내기

binarySearch() - 이진 검색

 

Collections 클래스의 메소드는 모두 static 타입이므로 Collections 객체를 생성할 필요는 없다.

 

* Collections 클래스의 활용(정렬, 이진 검색)

package Ch7_Ex;

import java.util.*;

public class CollectionsEx {
	static void printList(LinkedList<String> l) {	// 리스트의 요소를 모두 출력하는 메소드
		Iterator<String> iterator = l.iterator(); // Iterator 객체 리턴
		while (iterator.hasNext()) {	// Iterator 객체에 요소가 있을 때 까지 반복
			String e = iterator.next(); // 다음 요소 리턴
			String separator;
			if(iterator.hasNext())
				separator = "->"; // 마지막 요소가 아니면 -> 출력
			else
				separator = "\n"; // 마지막 요소이면 줄바꿈
			System.out.println(e+separator);
		}		
	}
	
	public static void main(String[] args) {
		LinkedList<String> myList = new LinkedList<String>(); // 빈 리스트 생성
		myList.add("트랜스포머");
		myList.add("스타워즈");
		myList.add("매트릭스");
		myList.add(0, "터미네이터");
		myList.add(2, "아바타");
		
		printList(myList); // 정렬 전 출력
		
		Collections.sort(myList); // 요소 정렬
		printList(myList); // 정렬된 요소 출력
		
		Collections.reverse(myList); // 요소의 순서를 반대로 구성
		printList(myList); // 요소 출력
		
		int index = Collections.binarySearch(myList, "아바타") + 1;
		System.out.println("아바타는 " + index + "번째 요소입니다.");
	}
}

반응형