티스토리 뷰
이번 프로젝트 때, 해쉬맵에 (키, 값 : 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에 넣고 랜덤으로 숫자 뽑아주면 됨.
'Java' 카테고리의 다른 글
두 개의 LinkedHashMap의 값들 비교하기 (0) | 2018.02.22 |
---|---|
외부url에서 xml로 파싱해와서 원하는 값만 추출하기 (xPath 사용) (0) | 2018.02.20 |
(cafe24 카페24 호스팅) Access denied ~~ 에러 뜰 때 (2) | 2017.04.20 |
Generics란? (0) | 2017.02.08 |
System 클래스의 스트림 멤버들 (0) | 2017.02.06 |