Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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静态hashMap返回重复项_Java_Static_Hashmap_Iterator - Fatal编程技术网

Java静态hashMap返回重复项

Java静态hashMap返回重复项,java,static,hashmap,iterator,Java,Static,Hashmap,Iterator,我实际上不知道问题出在哪里,所以我根据自己的想法给它命名 自己的直觉。 这个简单的程序是为了演示静态变量和方法以及hashMap演示 检索到的重复值是无法处理的,为什么HashMap中存在重复值? 在每次添加后,是否应该通过静态hashMap进行迭代来识别以前可能的重复项并从功能上删除它们? 然后我尝试调用removeDups方法手动删除它们,这次尝试也失败了 代码: 输出: 0 姓名:奥尔加 0 姓名:奥尔加 1. 姓名:玛丽亚 0 姓名:奥尔加 1. 姓名:玛丽亚 2. 姓名:塔蒂亚娜

我实际上不知道问题出在哪里,所以我根据自己的想法给它命名 自己的直觉。 这个简单的程序是为了演示静态变量和方法以及hashMap演示


检索到的重复值是无法处理的,为什么HashMap中存在重复值? 在每次添加后,是否应该通过静态hashMap进行迭代来识别以前可能的重复项并从功能上删除它们?

然后我尝试调用removeDups方法手动删除它们,这次尝试也失败了

代码:

输出:

0
姓名:奥尔加 0 姓名:奥尔加 1. 姓名:玛丽亚 0 姓名:奥尔加 1. 姓名:玛丽亚 2. 姓名:塔蒂亚娜
注册数量:3

您的
removeDups
方法应该从
HashMap
中删除重复的值。
HashMap
可以包含重复的值。特定的
HashMap
具有唯一的
Integer
键和
Registration
值,如果它们具有相同的名称,则可以认为是重复的

也就是说,
removeDups()
写得不好。它将这些值与
=
进行比较,而不是与
的值进行比较,这意味着它永远不会删除任何内容。此外,如果希望类返回
true
,则必须在
Registration
类中重写
equals

解决这些问题后,您可能会得到
ConcurrentModificationException
,因为在迭代
集合时,不应从
集合中删除
(除非您使用显式
迭代器
并使用
迭代器的
删除()
方法)

编辑:


正如Guy所评论的,您的
putUserInDB()
方法还调用
printUsers()
,它将打印添加的所有用户。因此,某些用户将被多次打印。

您没有重复的用户。当从构造函数调用
printUsers()
时,您只是在一遍又一遍地打印它。Map有唯一的键,而在我看来,您想要唯一的值……不管怎样,您的键是什么?静电场?你考虑过同步吗?为什么你甚至需要一个映射而不是一个集合,计数应该是
set.size()
。。。
public class Test {

    public static void main(String[]args) {

        Registration r = new Registration();

        r.putUserInDB("Olga");
        r.putUserInDB("Maria");
        r.putUserInDB("Tatiana");

        System.out.println("No of registrations: " + r.getRegistered());
        System.out.println("__________________________________________");

        r.putUserInDB("Anastasia");
        r.putUserInDB("Aleksandra");

        System.out.println("No of registrations: " + r.getRegistered());
        System.out.println("__________________________________________");

        r.putUserInDB("Nikolai");
        r.putUserInDB("Aleksei");

        System.out.println("No of registrations: " + r.getRegistered());    
    }
0