写一个 Comparator 对象来通知 TreeMap 如何比较罗马数字.java

问题描述 投票:0回答:0

修改 GUI 以显示两列,一列为罗马数字,另一列为阿拉伯值。它们应该按排序顺序出现,使用 TreeMap 进行排序。编写一个 Comparator 对象来通知 TreeMap 如何比较罗马数字。

public class RomanNumeralGUI extends JFrame {

    private static final Map<Character, Integer> ROMAN_TO_DECIMAL = new HashMap<>();
    static {
        ROMAN_TO_DECIMAL.put('I', 1);
        ROMAN_TO_DECIMAL.put('V', 5);
        ROMAN_TO_DECIMAL.put('X', 10);
        ROMAN_TO_DECIMAL.put('L', 50);
        ROMAN_TO_DECIMAL.put('C', 100);
        ROMAN_TO_DECIMAL.put('D', 500);
        ROMAN_TO_DECIMAL.put('M', 1000);
        
       
        
       
        
    }
    


    public RomanNumeralGUI(String[] numerals) {
        super("Roman Numerals");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);

        List<JLabel> romanLabels = new ArrayList<>();
        List<JLabel> decimalLabels = new ArrayList<>();
        for (String numeral : numerals) {
            String romanNumeral = numeral.trim();
            int decimalValue = valueOf(romanNumeral);
            JLabel romanLabel = new JLabel(romanNumeral);
            JLabel decimalLabel = new JLabel(Integer.toString(decimalValue));
            romanLabels.add(romanLabel);
            decimalLabels.add(decimalLabel);
        }

        JPanel panel = new JPanel(new GridLayout(0, 2));
        for (int i = 0; i < romanLabels.size(); i++) {
            panel.add(romanLabels.get(i));
            panel.add(decimalLabels.get(i));
        }
        add(panel);
    }
    public static int valueOf(String romanNumeral) {
        int decimalValue = 0;
        int lastDigit = 0;
        for (int i = romanNumeral.length() - 1; i >= 0; i--) {
            int digit = ROMAN_TO_DECIMAL.get(romanNumeral.charAt(i));
                        
            if (digit < lastDigit) {
                decimalValue -= digit;
            } else {
                decimalValue += digit;
            }
            lastDigit = digit;
        }
        return decimalValue;
    }
}
java sorting comparator
© www.soinside.com 2019 - 2024. All rights reserved.