티스토리 뷰

반응형

Java의 Map에서 입력받은 값의 근사치에 해당하는 항목을 얻어내고자 할때는 다음을 참고하세요.

import java.util.Map;
import java.util.TreeMap;

public class NearPositionExample {
    
    public static void main(String[] args) {
        Map<Integer, String> gradeList = new TreeMap<>();
        gradeList.put(1, "Molly");
        gradeList.put(3, "Ava");
        gradeList.put(4, "Jennifer");
        gradeList.put(8, "Park");
        gradeList.put(15, "Nicole");
        gradeList.put(22, "Jack");

        String answer1 = nearNextItem(gradeList, 3.4f);
        System.out.println("Answer: " + answer1);  // Output: Jennifer

        String answer2 = nearNextItem(gradeList, 5.2f);
        System.out.println("Answer: " + answer2);  // Output: Park

        String answer3 = nearNextItem(gradeList, 10.0f);
        System.out.println("Answer: " + answer3);  // Output: Nicole
    }

    public static String nearNextItem(Map<Integer, String> gradeList, float number) {
        int nextNumber = (int) Math.ceil(number); // Round up to the next integer
        TreeMap<Integer, String> treeMap = new TreeMap<>(gradeList);

        Map.Entry<Integer, String> entry = treeMap.ceilingEntry(nextNumber);

        if (entry != null) {
            return entry.getValue();
        }
        return null; // 찾지못함
    }
}

위 코드는 "nearNextItem"이라는 메서드를 포함하는 "NearPositionExample"이라는 Java 클래스를 정의합니다.

이 메서드는 문자열(gradeList의 목록)과 float 숫자에 대한 integer 맵을 가져옵니다. 그런 다음 Map에서 주어진 숫자에 가장 가까운 항목을 찾고 해당 값을 문자열로 반환합니다.

먼저 "Math.ceil"를 사용하여 주어진 숫자를 가장 가까운 정수로 반올림합니다. 그런 다음 입력 Map에서 새 TreeMap을 만들고 "ceilingEntry" 메서드를 사용하여 반올림된 숫자보다 크거나 같은 가장 작은 키가 있는 항목을 Map에서 찾습니다. 적당한 항목이 있다면 해당 값을 문자열로 반환합니다. 해당 항목이 없으면 메서드는 null을 반환합니다.

반응형
반응형
최근에 달린 댓글