RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1430364
Accepted
Alex_Lynx
Alex_Lynx
Asked:2022-07-17 02:59:25 +0000 UTC2022-07-17 02:59:25 +0000 UTC 2022-07-17 02:59:25 +0000 UTC

用 HashMap 值填充空数组

  • 772

再会!作为培训,我正在编写一个计票程序。

这是代码:

public class Kata_7_3 {
    public static String getWinner(final List<String> listOfBallots) {
        //Your code
        int votesGiven = listOfBallots.size();// Кол-во проголосовавших

        String winnerName = "";

        ArrayList<String> uniqueNamesOfCandidates = candidates(listOfBallots); // Получение списка уникальных имен

        HashMap<String,Integer> resultOfVote = new HashMap<>();// Мапа с кандидатами и голосами

        for(String name : uniqueNamesOfCandidates){
            int votes = 0;
            for (int j = 0;j< listOfBallots.size();j++){
                if(Objects.equals(name, listOfBallots.get(j))){
                    votes++;
                }
                resultOfVote.put(name,votes);
            }
        }
        int [] valVotes = new int[resultOfVote.size()];
        
        for (HashMap.Entry<String,Integer> entry : resultOfVote.entrySet()){
            Arrays.fill(valVotes, entry.getValue());
        }
        System.out.println(Arrays.toString(valVotes));
        return winnerName;
    }

    /**
     * Метод получает на вход параметр List ballots, и возвращает список уникальных кандидатов
     * @param ballots Бюллетени. Список, где указаны кандидаты. Сколько раз указан кандидат в списке,
     *                столько за него отдано голосов
     * @return возвращает ArrayList кандидатов
     */
    public static ArrayList<String> candidates (List<String>ballots){
        Set<String> candidates = new HashSet<>(ballots);
        ArrayList<String> listOfNamesOfCandidates = new ArrayList<>(candidates);
        return listOfNamesOfCandidates;
    }
}

这段代码的逻辑是:

  1. 在输入中,我们得到以下格式的列表:“A”、“A”、“A”、“B”、“B”、“B”、“Safa”、“C”、“C”、“C” ","C","C","C"

  2. 然后在候选人方法中,我们得到一个候选人列表

  3. 之后,我们创建一个包含名称和票数的地图

然后我必须计算谁赢了。我想在一个数组中显示值,并且已经在数组中进行了计算,然后通过搜索键值,显示获胜者。

这就是我在这里尝试做的事情:

int [] valVotes = new int[resultOfVote.size()];

for (HashMap.Entry<String,Integer> entry : resultOfVote.entrySet()){
    Arrays.fill(valVotes, entry.getValue());
}
System.out.println(Arrays.toString(valVotes));
return winnerName;

但是,只有一个,即地图中最后一个候选人的投票数被添加到数组中。结果是这样的: [1, 1, 1, 1]

告诉我如何用地图中的值填充数组,以便值对应于每个候选者。类型:[4, 7, 1, 5]

java массивы
  • 1 1 个回答
  • 41 Views

1 个回答

  • Voted
  1. Best Answer
    Igor
    2022-07-17T03:54:06Z2022-07-17T03:54:06Z

    在我看来,随着溪流的出现,它会显得更漂亮一些。诚然,这里有一个缺点,如果有 2 个或多个候选人的票数相同,那么它将给出第一个。但是您可以考虑如何自己修复它,或者您可能是这样认为的)

    
    public static void main(String[] args) {
        {
            String name = getName(List.of("A", "A","A","A", "A", "B", "B", "B","Safa","C","C","C","C","C","C"));
        }
    }
    
    private static String getName(List<String> list) {
        return list.stream()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                .entrySet()
                .stream()
                .max(Map.Entry.comparingByValue())
                .orElseThrow(() -> new RuntimeException("Нет кандидатов"))
                .getKey();
    }
    

    或者,如果您不想使用流,那么没有它们的类似解决方案

    private static String getName(List<String> list) {
        if(list.isEmpty()) throw new RuntimeException("Нет кандидатов");
    
        Map<String, Long> map = new HashMap<>();
        for (String s : list) {
            map.merge(s, 1L, Long::sum);
        }
    
        return Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey();
    }
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5