[JAVA] ArrayList 정렬하기

세하·2025년 5월 9일

JAVA

목록 보기
14/17

Array와 ArrayList 비교

XArrayArrayList
사이즈고정 int[] arr = new int[3];가변적 ArrayList arrList = new ArrayList<>();
속도초기화시 메모리에 할당되어 ArrayList보다 속도가 빠름데이터 추가 삭제시 메모리를 재할당하기 때문에 속도가 Array보다 느림
크기 변경변경 불가추가, 삭제 가능 add(), remove()
다차원int[][][] multiArr = new int[3][3][3];불가능

Collections.sort()

대소문자 구분 O

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]

대소문자 구분 X

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 앞에 위치한다.

List.sort()

대소문자 구분 O

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]  

대소문자 구분 X

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 앞에 위치한다.

0개의 댓글