| X | Array | ArrayList |
|---|---|---|
| 사이즈 | 고정 int[] arr = new int[3]; | 가변적 ArrayList arrList = new ArrayList<>(); |
| 속도 | 초기화시 메모리에 할당되어 ArrayList보다 속도가 빠름 | 데이터 추가 삭제시 메모리를 재할당하기 때문에 속도가 Array보다 느림 |
| 크기 변경 | 변경 불가 | 추가, 삭제 가능 add(), remove() |
| 다차원 | int[][][] multiArr = new int[3][3][3]; | 불가능 |
ArrayList<String> list = new ArrayList<>(Arrays.asList("D", "A", "C", "B", "b", "a"));
System.out.println("원본 : " + list);
// 오름차순
Collections.sort(list);
System.out.println("오름차순 : " + list);
// 내림차순
Collections.sort(list, Collections.reverseOrder());
System.out.println("내림차순 : " + list);
-----출력 결과-----
원본 : [D, A, C, B, b, a]
오름차순 : [A, B, C, D, a, b]
내림차순 : [b, a, D, C, B, A]
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("D", "a", "C", "B", "b", "A"));
System.out.println("원본 : " + list2);
// 대소문자 구분없이 오름차순
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list);
// 대소문자 구분없이 내림차순
Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list);
-----출력 결과-----
원본 : [D, a, C, B, b, A]
대소문자 구분없이 오름차순 : [a, A, B, b, C, D]
대소문자 구분없이 내림차순 : [D, C, B, b, a, A]
대소문자를 구분하지 않으면 a와 A는 같은 레벨로 취급된다.
따라서 원래의 순서대로 출력됨
위의 코드 원본에서 a A 순서이며 B b 순서로 되어있으므로
오름차순과 내림차순에서 모두 a가 A 앞에, B가 b 앞에 위치한다.
ArrayList<String> list = new ArrayList<>(Arrays.asList("D", "a", "C", "B", "b", "A"));
System.out.println("원본 : " + list);
list.sort(Comparator.naturalOrder());
System.out.println("오름차순 : " + list);
list.sort(Comparator.reverseOrder());
System.out.println("내림차순 : " + list);
-----결과 출력-----
on\bin Main2 "
원본 : [D, a, C, B, b, A]
오름차순 : [A, B, C, D, a, b]
내림차순 : [b, a, D, C, B, A]
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("D", "a", "C", "B", "b", "A"));
System.out.println("원본 : " + list2);
list2.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list2);
list2.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list2);
-----결과 출력-----
on\bin Main2 "
원본 : [D, a, C, B, b, A]
대소문자 구분없이 오름차순 : [a, A, B, b, C, D]
대소문자 구분없이 내림차순 : [D, C, B, b, a, A]
대소문자를 구분하지 않으면 a와 A는 같은 레벨로 취급된다.
따라서 원래의 순서대로 출력됨
위의 코드 원본에서 a A 순서이며 B b 순서로 되어있으므로
오름차순과 내림차순에서 모두 a가 A 앞에, B가 b 앞에 위치한다.