일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 붕대 감기
- 티스토리챌린지
- over()
- spring security 설정
- 쿠키
- 자바의정석
- 다형성
- 프로그래머스
- 캡슐화
- 멀티프로세싱
- CPU
- 오버라이딩
- break 사용법
- continue 사용법
- 프로그래머스 붕대 감기
- hackerrank
- 중첩 break
- 입출력
- java
- 자바의 정석
- 오블완
- spring security
- SQL Mapper
- 객체지향
- 멀티태스킹
- 혼공얄코
- 붕대 감기 자바
- contiune
- 오버로딩
- 리눅스
- Today
- Total
쉽게 쉽게
Arrays와 Collections 본문
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다.
1. Arrays
Arrays에는 배열을 다루는데 유용한 메서드가 정의되어 있다.
copyOf(arr, arr.length)
길이만큼 배열 복사
copyOfRange(arr, from, to)
from부터 to까지 복사(to는 범위에 포함x)
fill(arr, 값)
배열의 모든 요소를 지정된 값으로 채움
setAll(arr, 함수형 인터페이스 or 람다식)
배열을 채울 함수형 인터페이스(math.random())을 매개변수로
sort(arr)
배열을 정렬
binarySearch(arr,위치)
배열에 저장된 요소를 검색해서 위치 반환(정렬된 상태야 올바른 결과,이진 검색으로 속도가 빠름)
equals()
요소 비교
toString()
문자열로 출력
asList()
배열을 List로 전환
Arrays.aslist(1,2,3,4,5) - 단 배열의 크기 변경 불가능(추가,삭제 불가능)
new ArrayList(Arrays.aslist(1,2,3,4,5)) - ArrayList로 변환
(1) Comparator와 Comparable
Arrays.sort()를 호출하면 알아서 정렬이 되는 것 처럼 보이지만, 사실은 Comparable의 구현에 의해 정렬되었던 것이다.
Comparator와 Comparable는 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있다.
Comparable은 자기 자신과 파라미터로 들어오는 객체를 비교하는 것이고, Comparator는 자기 자신의 상태가 어떻든 상관없이 파라미터로 들어오는 두 객체를 비교하는 것이다. 즉, 본질적으로 비교한다는 것 자체는 같지만, 비교 대상이 다르다는 것이다.
Comparable는 기본 정렬을 구현하는 데 사용
int[] scores = {899, 982, 1090, 982, 1018};
Arrays.sort(scores);
public class T implements Comparable<T> {
// Fields, Getters, Setters 생략
@Override
public int compareTo(T o) {
return o.getScore() - getScore();
}
}
점수와 같이 정렬이 가능한 객체는 Comparable가 자동으로 정렬을 해준다.
하지만 특정 타입의 객체는 기본형 데이터와 달리 정렬 기준이 없으면 정렬을 할 수가 없으며, 따라서 정렬 기준을 정의하여 알려줘야한다.
Comparable 인터페이스에는 compareTo(T o) 메소드 하나가 선언되어있는 것을 볼 수 있다.
Comparable을 사용하고자 한다면 compareTo 메소드를 재정의(Override/구현)을 해주어야 한다는 것이다.
"o.getScore() - getScore();" 부분을 원하는 정렬 조건으로 바꿔주면 된다.
Comparator는 정렬 하고자 하는 객체에 이미 존재하고 있는 정렬 기준과 다른 정렬 기준으로 정렬을 하고 싶을 때 사용한다.
compare(T o1, T o2)를 변경해주면 된다.
예시1
Comparator<T> comparator = new Comparator<T>() {
@Override
public int compare(T a, T b) {
return b.getScore() - a.getScore();
}
};
예시2
class Descending implements comparator{
@Override
public int compare(object o1, object o2){
if(o1 instanceof comparable && o2 instanceof comparable){
comparable c1 = (comparable)o1;
comparable c2 = (comparable)o2;
return c1.compareTo(c2)
// 기본 정렬(오름차순)
// 여기서 –1을 곱하면 역순(내림차순)으로 정렬 가능
}
return -1;
}
2. Collections
Collections는 컬렉션과 관련된 메서드를 제공한다.
Arrays와 동일한 fill(), copy(), sort(), binarySearch() 등의 메서드 있음
아래는 추가적인 Collections의 메서드 목록이다.
min, max
최소값,최대값
swap()
순서 교환
shuffle()
순서 뒤섞기
disjoint()
두 개의 컬렉션을 비교해서 일치하는 값이 하나도 없으면 true, 하나라도 있으면 false 반환
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
'개발공부 > Java' 카테고리의 다른 글
쓰레드 (1) | 2023.03.28 |
---|---|
지네릭스(Generics) (0) | 2023.03.27 |
컬렉션 프레임웍 (0) | 2023.03.23 |
날짜와 시간 (0) | 2023.03.22 |
Java.lang 패키지 (0) | 2023.03.21 |