Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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注册问题_Java - Fatal编程技术网

java注册问题

java注册问题,java,Java,例如,当我尝试注册一个叫Eric的人,然后再次注册Eric时,它就起作用了。这不应该发生在我的代码中。如果列表中已有Eric,则不应注册Eric。这是我的全部代码: private Person findName(String name) { for (Person person : personer) { if (person.getName() == name) { return person;

例如,当我尝试注册一个叫Eric的人,然后再次注册Eric时,它就起作用了。这不应该发生在我的代码中。如果列表中已有Eric,则不应注册Eric。这是我的全部代码:

     private Person findName(String name) {
        for (Person person : personer) {
            if (person.getName() == name) {
                return person;
            }
        }
        return null;
    }





 private boolean containsName(String name) {

       return findName(name) != null;

 }

您的问题在于这一行:

if (person.getName() == name)
你想要

if (person.getName().equals(name))
在Java中,“==”是非基元类型的引用相等。对
name
(即其“地址”(如果愿意)的引用与对
getName()
返回的对象的引用不同


另请参见:

您的问题在于这一行:

if (person.getName() == name)
你想要

if (person.getName().equals(name))
在Java中,“==”是非基元类型的引用相等。对
name
(即其“地址”(如果愿意)的引用与对
getName()
返回的对象的引用不同


另请参见:

布赖恩的回答是正确的。但是,在“森林而不是树木”级别上,代码的设计也需要固定:


如果您想要一个已排序名称的集合,并且能够搜索现有名称,那么应该使用
TreeMap
。一个
ArrayList
(您在每次插入时都会对其进行排序)是完全错误的数据结构。

Brian的答案是正确的。但是,在“森林而不是树木”级别上,代码的设计也需要固定:


如果您想要一个已排序名称的集合,并且能够搜索现有名称,那么应该使用
TreeMap
。一个
ArrayList
(您在每次插入时都会对其进行排序)是完全错误的数据结构。

+1用于获取错误的代码部分。然而,代码的设计也是错误的(见我的帖子),在修复之后,就不再需要手动比较名称了,所以这个问题就不会出现了。我倾向于谨慎地避免在这里打开那罐蠕虫,但你是绝对正确的。+1用于获得错误的代码部分。然而,代码的设计也是错误的(请参阅我的帖子),在修复之后,就不再需要手动比较名称了,所以这个问题就不会出现。我倾向于谨慎地在这里打开那罐蠕虫,但你是绝对正确的。或者是
树集
。甚至是一个
哈希集
。当然,如果你只有五个左右的用户,那没什么大不了的…@Brian:+1是的,你是对的,
TreeSet
也不错,不过通过使用名称键控的映射,你可以使用自然排序,而不必编写自定义比较器。(
HashSet
在一般情况下是可以的,但这里OP希望项目按名称排序。)或
TreeSet
。甚至是一个
哈希集
。当然,如果你只有五个左右的用户,那没什么大不了的…@Brian:+1是的,你是对的,
TreeSet
也不错,不过通过使用名称键控的映射,你可以使用自然排序,而不必编写自定义比较器。(
HashSet
在一般情况下是可以的,但这里OP希望按名称对项目进行排序。)