Arrays
- 배열을 다루는 데 유용한 메서드가 정의되어 있는 클래스로, 모든 메서드가 static 메서드이기 때문에 객체를 생성하지 않고도 바로 사용할 수 있다.
주요 메서드
<T> List<T> asList<T... a> | 전달받은 배열을 고정 크기의 리스트로 변환하여 반환한다. |
int binarySearch(Object[] a, Object key) | 전달받은 배열에서 특정 객체를 이진 검색 알고리즘을 사용하여 검색한 후, 그 결과를 반환한다. |
<T> T[] copyOf(T[] original, int newLength) | 전달받은 배열을 특정 길이의 새로운 배열로 복사해서 반환한다. |
T[] copyOf(T[] original, int from, int to) | 전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환한다. |
boolean equals(Object[] a, Object[] b) | 전달받은 두 배열이 같은지 확인한다. |
void fill(Object[] a, Object val) | 전달받은 배열의 모든 요소를 특정 값으로 초기화한다. |
void sort(Object[] a) | 전달받은 배열의 모든 요소를 오름차순으로 정렬한다. |
Collections
- Arrays가 배열과 관련된 메서드를 제공하는 클래스라면, Collections는 컬렉션과 관련된 메서드를 제공한다.
컬렉션 동기화
- 멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에, 데이터의 일관성을 유지하기 위해서는 공유되는 객체에 대한 동기화가 필요하다.
- Vector와 Hashtable과 같은 구버전 클래스들은 자체적으로 동기화 처리가 되어 있지만, 멀티쓰레드 프로그래밍이 아닌 곳에서 사용할 경우 성능을 떨어뜨리는 요인이 된다.
- ArrayList와 HashMap과 같은 컬렉션은 동기화를 자체적으로 처리하지 않기 때문에, 필요한 경우에만 동기화 메서드를 이용해서 동기화 처리가 가능하도록 변경하는 식으로 사용한다.
static Collection synchronizedCollection(Collection c)
메서드 활용
public class CollectionsTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
System.out.println("list = " + list);
addAll(list, 1, 2, 3, 4, 5);
System.out.println("list = " + list);
// 오른쪽 2칸 이동
rotate(list, 2);
System.out.println("list = " + list);
// 첫 번째와 세 번째 교환
swap(list, 0, 2);
System.out.println("list = " + list);
// 저장된 요소의 위치를 임의로 변경
shuffle(list);
System.out.println("list = " + list);
// 정렬
sort(list);
System.out.println("list = " + list);
// 역순정렬
sort(list, reverseOrder());
System.out.println("list = " + list);
// 3이 저장된 위치 반환
int idx = binarySearch(list, 3);
System.out.println("idx = " + idx);
System.out.println("max = " + max(list));
System.out.println("min = " + min(list));
System.out.println("min = " + max(list, reverseOrder()));
// 리스트를 9로 채운다.
fill(list, 9);
System.out.println("list = " + list);
// 리스트를 생성하고 2로 채운다.
// 결과는 변경 불가
List newList = nCopies(list.size(), 2);
System.out.println("newList = " + newList);
// 공통 요소가 없으면 true
System.out.println(disjoint(list, newList));
copy(list, newList);
System.out.println("newList = " + newList);
System.out.println("list = " + list);
replaceAll(list, 2, 1);
System.out.println("list = " + list);
Enumeration e = enumeration(list);
ArrayList list2 = list(e);
System.out.println("list2 = " + list2);
}
}
'Java > Java' 카테고리의 다른 글
람다 표현식 (0) | 2022.03.28 |
---|---|
Enum 클래스 (0) | 2022.03.28 |
Comparable과 Comparator (0) | 2022.03.28 |
Iterator (0) | 2022.03.28 |
Map 컬렉션 클래스 (0) | 2022.03.28 |