Java

[Java] List정렬(sort)/ Collections.sort, List.sort

디벨로펄 2023. 2. 11.
반응형

1. Collections.sort

public static  void sort(List<T> list)
public static  void sort(List<T> list, Comparator<? super T> c)

List를 받아서 정렬한다.

Comparator 지정할 수 있다. Comparator는 Lambda로도 표현이 가능하며, 간단한 비교 시 편리하다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ListSort {
	public static void main(String[] args) {
		List<Integer> intList = new ArrayList<>();
        
		setList(intList);
		Collections.sort(intList);
		// Collections.sort(intList, Comparator.naturalOrder()); //똑같음.
		System.out.println("Collections : 기본");
		System.out.println(intList);

		
		setList(intList);
		Collections.sort(intList, (i1, i2) -> i1 - i2);
		System.out.println("Collections 람다 : 오름차순.");
		System.out.println(intList);
		
		setList(intList);
		Collections.sort(intList, (i1, i2) -> i2 - i1);
		System.out.println("Collections 람다 : 내림차순");
		System.out.println(intList);

	}

	public static void setList(List<Integer> list) {
		list.clear();
		list.add(5);
		list.add(4);
		list.add(1);
		list.add(2);
		list.add(3);
	}
}

 

 

2. List.sort()

default void sort(Comparator<? super E> c)

java 8이후부터 추가됨.

마찬가지로 Compartor를 Lambda로 표현 가능하다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ListSort {
	public static void main(String[] args) {
		List<Integer> intList = new ArrayList<>();
		setList(intList);
		intList.sort(Comparator.naturalOrder());
		System.out.println("natural Order");
		System.out.println(intList);

		setList(intList);
		intList.sort((i1, i2) -> i1 - i2); // 오름차순.
		System.out.println("Lamda로 오름차순");
		System.out.println(intList);

		setList(intList);
		intList.sort((i1, i2) -> i2 - i1); // 내림차순
		System.out.println("Lamda로 내림차순");
		System.out.println(intList);
    }

	public static void setList(List<Integer> list) {
		list.clear();
		list.add(5);
		list.add(4);
		list.add(1);
		list.add(2);
		list.add(3);
	}
}

 

 

결과를 찍어보면 다음과 같다.

natural Order
[1, 2, 3, 4, 5]
Lamda로 오름차순
[1, 2, 3, 4, 5]
Lamda로 내림차순
[5, 4, 3, 2, 1]
Collections : 기본
[1, 2, 3, 4, 5]
Collections 람다 : 오름차순.
[1, 2, 3, 4, 5]
Collections 람다 : 내림차순
[5, 4, 3, 2, 1]

 

반응형

댓글