Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打印最常见的system.out.print(“打印”)_Java - Fatal编程技术网

Java 如何打印最常见的system.out.print(“打印”)

Java 如何打印最常见的system.out.print(“打印”),java,Java,在这个程序中,我将有一个名字列表,在采取特定操作后,它将通过system.out.print()方法(例如system.out.print(“Joe”)打印出来 例如,我的输出是 Joe, Ben, Ben, Tom, Ben, Joe, Tom, Tom, Joe, Tom 现在,我需要找到一种方法,使用Java遍历打印的名称列表并收集最常见的名称,理想情况下,在完成计算后,它会打印类似的内容 The most common name was: Tom 我曾考虑过创建int计数器,每次打印

在这个程序中,我将有一个名字列表,在采取特定操作后,它将通过system.out.print()方法(例如system.out.print(“Joe”)打印出来

例如,我的输出是

Joe, Ben, Ben, Tom, Ben, Joe, Tom, Tom, Joe, Tom
现在,我需要找到一种方法,使用Java遍历打印的名称列表并收集最常见的名称,理想情况下,在完成计算后,它会打印类似的内容

The most common name was: Tom

我曾考虑过创建int计数器,每次打印名称时都会增加++,但我不知道如何进一步使用这种解决方案。这可能是一个很短的时间,所以我很感谢您的时间!

我可以想出两种方法:

  • 创建映射/字典,使用名称作为键,并计算每个名称的出现次数,取计数器最大的名称
  • 对名称列表进行排序,循环排序后的列表,增加同一组名称的计数器,遇到新名称时重置计数器,同时记录最大计数的名称

  • 这两种方法都具有相似的复杂性

    您可以使用HashMap

    HashMap<String, Integer> hm = new HashMap<>();
    
    HashMap hm=newhashmap();
    
    要将名称存储为键并对每个名称使用计数器,请使用如下方法

      public HashMap<String, Integer> incrementCountForName(HashMap<String, Integer> hm, String name) {
                if (hm.containsKey(name)) {
                    int count = hm.get(name);
                    hm.put(name, count + 1);
                } else {
                    hm.put(name, 1);
                }
                return hm;
            }
    
    public HashMap incrementCountForName(HashMap hm,字符串名){
    如果(hm.CONTANSKEY(姓名)){
    int count=hm.get(名称);
    hm.put(姓名、计数+1);
    }否则{
    hm.put(姓名,1);
    }
    返回hm;
    }
    

    为了找到映射的最大值,您可以查看一下。有许多商品解决方案。

    您可以将名称映射到出现的次数。您可以使用HashMapI,不知道它是否会改变,但打印的名称不是来自数组,只是一个普通的if(条件){print“joe”}某种方式。我仍然可以对它们进行排序吗?也就是说,你可以将它们存储在数组中吗?如果(条件){print“joe”;store“joe”in array}?或者你的列表将动态变化,而你永远不知道“条件”何时会发生?那么你可以使用方法1:使用映射/字典,并在“条件”时插入名称如果发生这种情况,请在以后查询最大计数的值。好的,谢谢,如果我能选择两个,我会勾选您的答案!:(