티스토리 뷰

Java

HashMap 에서 최대값(Max) 뽑기

deerfrd 2018. 1. 31. 11:02

이번 프로젝트 때, 해쉬맵에 (키, 값 : no, count) 구조로 넣어두었는데, 그 중 count가 제일 높은 숫자인 no를 뽑아와야됐었다.


맵 엔트리를 써서 가능했다.



Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 


//임의로 맵에 값 넣음 (No, count수)

map.put(1,5);

map.put(2,3);

map.put(5,4);


for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

    if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0) {

maxEntry = entry; //compareTo를 이용해 제일 높은 map값이 maxEntry에 저장됨

    }

}


//이러면 maxEntry에 최대 count수를 가진 map의 항목이 들어가게됨

//최대 count수를 가진 No를 뽑아오기 위함

int maxCountNo = maxEntry.getKey();



getKey()함수로 맵의 No를 갖고오는 방법 이외에도

value를 갖고오는 getValue() 함수도 있다.


필요에 따라 원하는 것을 쓰면 된다.



** 만약 똑같은 최대 카운트 수를 가진 유저No가 2개 이상인 경우, (map에 (1,5)와 (5,5) 값이 들어가 있는 경우)

1) 둘 중에 하나만 갖고올 경우는 위 처럼 진행하고

2) 둘 다 뽑아서 그 중에 랜덤한 하나의 값만 꺼내고 싶을 때는 > 를 >= 로 바꿔주면 된다. (compareTo의 결과값)

둘 다 뽑아서 ArrayList에 넣고 랜덤으로 숫자 뽑아주면 됨.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함