각 항목의 값이 포함 된지도를 사용하여 목록을 정렬하고 싶습니다.자바 비교기는 최종 변수가 아닌 변수를 사용합니다.
Map<Integer, Float> map = new HashMap<>();
List<Integer> list = new ArrayList<>();
map.put(0, 0.0f);
map.put(1, 5.0f);
map.put(2, 2.0f);
list = new ArrayList<>(map.keySet());
Collections.sort(list, new Comparator<Integer>() {
public int compare(Integer left, Integer right) {
Float leftCost = map.get(left);
Float rightCost = map.get(right);
return leftCost.compareTo(rightCost);
}
})
나는 1
의 값이 2
보다 높은 있기 때문에 순서가 0,2,1
되고 싶어요. 그러나 자바는 내가 이것을하게하지 않는다. 다음 오류가 발생합니다. Cannot refer to a non-final variable map inside an inner class defined in a different method
어떻게 그렇게 할 수 있습니까?
왜지도를 최종으로 정의하지 않습니까? –
수정해야하기 때문에. 아니면 수정해도 최종 수 있습니까? –
@OskarKjellin 왜 댓글 대신 대답하지 않습니까? :) –