JAVA 꿀팁

HashMap Value값 BigInteger 내림차순 정렬하기

감._.자 2021. 12. 16. 18:19
728x90
반응형

Map.Entry값을 받아온 뒤 Collections.sort,Comparator 사용하여 정렬하면됨.

여기서 Comparator 함수의 return 값으로 

o2.getValue().compareTo(o1.getValue())

를 작성하면 내림차순 정렬이 된다.

 

compareTo는 BigInteger의 메서드임!

참고: https://docs.microsoft.com/ko-kr/dotnet/api/system.numerics.biginteger.compareto?view=net-6.0

BigInteger1.compareTo(BigInteger2)

반환 값 설명
0보다 작음 BigInteger1이 BigInteger2 보다 작다.
0 BigInteger1과 BigInteger2 값이 같다.
0보다 큼 BigInteger1이 BigInteger2 보다 크다.

 

오름차순 정렬하고 싶은 경우에는 o1과 o2의 순서를 바꾸면 됨.

o1.getValue().compareTo(o2.getValue())

 

아래 코드에서 내림차순으로 정렬한 값은 list에 저장되게 했음.

import java.math.BigInteger;
import java.util.*;
import java.io.*;
import java.util.List;

public class Test {
    static Map<Character, BigInteger> dic = new HashMap<Character, BigInteger>();
    public static void main(String[] args) {
    	// Map.Entry 리스트 작성
        List<Map.Entry<Character, BigInteger>> list = new LinkedList<>(dic.entrySet());
        // 비교함수 Comparator를 사용하여 내림차순 정렬
        Collections.sort(list, new Comparator<Map.Entry<Character, BigInteger>>() {
            @Override
            public int compare(Map.Entry<Character, BigInteger> o1, Map.Entry<Character, BigInteger> o2) {
                // 내림차순 정렬
                return o2.getValue().compareTo(o1.getValue());
            }
        });
    }

}
728x90
반응형