Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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<;字符串,列表>;-。containsKey()始终返回false_Java_Arraylist_Hashmap - Fatal编程技术网

Java 将元素添加到HashMap<;字符串,列表>;-。containsKey()始终返回false

Java 将元素添加到HashMap<;字符串,列表>;-。containsKey()始终返回false,java,arraylist,hashmap,Java,Arraylist,Hashmap,我有邮件地址的列表,以及用户id(列表中的每个条目看起来像:id:123,邮件:)john@doe.com“) 我想制作一个HashMap,其中每个键都是电子邮件地址的域名,值是来自该域的电子邮件列表: "foo.com": [1] id: 123, mail: a@foo.com [2] id: 345 mail: b@foo.com "bar.com": [1] id: 787, mail: a@bar.co

我有邮件地址的
列表
,以及用户id(列表中的每个条目看起来像:
id
123
邮件
)john@doe.com“

我想制作一个
HashMap
,其中每个键都是电子邮件地址的域名,值是来自该域的电子邮件列表:

"foo.com":
  [1]
      id: 123,
      mail: a@foo.com
  [2]
      id: 345
      mail: b@foo.com
"bar.com":
  [1]
      id: 787,
      mail: a@bar.com
  [2]
      id: 456
      mail: b@bar.com
为了实现这一点,我做了下面的事情。问题是,当我尝试向
domain
条目上的现有列表添加新列表条目时,java向
sortedAddresses
添加新记录,而不是使用当前记录。我的预测是
containsKey()
方法总是返回false

HashMap<String, List> sortedAddresses = new HashMap<String, List>();

        for(HashMap<String, String> r : this.lightUsersList){

            String mail = r.get("email");
            Integer uid = Integer.parseInt(r.get("id"));


            try{
                String[] mailSplit = mail.split("@");
                String domain = mailSplit[1];

                //if domain key doesn't exist, add it to hashmap
                if(!sortedAddresses.containsKey(domain)){
                    List<HashMap> domainAddr = new ArrayList<HashMap>();
                    sortedAddresses.put(domain, domainAddr);
                }

                List<HashMap> domainAddr = sortedAddresses.get(domain);
                sortedAddresses.remove(domain);
                domainAddr.add(r);
                sortedAddresses.put(domain, domainAddr);

            }
            catch(Exception e){
                //to be implemented
                System.out.println("Nie udalo sie dodac adresu " + mail + " do tablicy domenowej (" + e.getMessage() + ")");
            }



                //displaying hashmap summary (source from another SO thread)
                Iterator it = sortedAddresses.entrySet().iterator();
                while (it.hasNext()) {
                    Map.Entry pairs = (Map.Entry)it.next();
                    System.out.println(pairs.getKey() + " = " + sortedAddresses.get(pairs.getKey()).size());
                    it.remove(); // avoids a ConcurrentModificationException
                } 
        }
应该是:

foo = 2
bar = 2

好吧,看来我明白我犯的错误了。当然,
Iterator
部分应该在
for
循环之后。我的错。讨厌星期一。

如果你能想得那么远,为什么不一步一步地调试它呢?
foo = 2
bar = 2