打印2个彼此相邻的哈希映射

时间:2017-10-22 19:41:01

标签: java hashmap printf

public static void printingCharacters(Map<Character, Integer> m,Map <Character, Integer> m1) {
            for (Map.Entry<Character, Integer> countedArray : m.entrySet()) {
                System.out.printf("Letter: %c :  Time occurs: %d -  %.2f %%\t\t\t Letter: %c :  Time occurs: %d -  %.2f %%\n ", countedArray.getKey(),
                        countedArray.getValue(), percentageOfOccurrence(countedArray.getValue())
                System.out.println("-----------------------------------------------|  \t|-----------------------------------------------------|");

            }
        }

我有一个方法接受2个哈希映射作为参数,我想打印彼此相邻的哈希映射,所以我使用一个for循环遍历第一个并打印我需要它打印的内容。然后我使用printf语句以在console中显示结果。在printf中的\ t \ t \ t \ tt(图片中的第二个表)我想打印相同的内容但是对于地图m1我不知道如何做到这一点。如果有人能给我一个很棒的提示:)。

P.S最后我想实现这样的事情。表1是m表2是m1

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用迭代器执行此操作:

public static void printingCharacters(Map<Character, Integer> m, Map <Character, Integer> m1) {    
    Iterator<Map.Entry<Character, Integer>> it = m.entrySet().iterator();
    Iterator<Map.Entry<Character, Integer>> it1 = m1.entrySet().iterator();

    while(it.hasNext() && it1.hasNext()) {
        printEntries(it.next(), it1.next());
    }
}

public static void printEntries(Map.Entry<Character, Integer> e, Map.Entry<Character, Integer> e1) {
    System.out.printf("Letter: %c :  Time occurs: %d -  %.2f %%\t\t\t Letter: %c :  Time occurs: %d -  %.2f %%\n ", e.getKey(),
            e.getValue(), percentageOfOccurrence(e.getValue()), e1.getKey(), e1.getValue(), percentageOfOccurrence(e1.getValue()));
    System.out.println("-----------------------------------------------|  \t|-----------------------------------------------------|");
}