Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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在Spring框架中是否正确执行if-else语句?_Java_Spring - Fatal编程技术网

为什么';java在Spring框架中是否正确执行if-else语句?

为什么';java在Spring框架中是否正确执行if-else语句?,java,spring,Java,Spring,我正试图通过按下“喜欢”按钮,为我的web应用程序创造喜欢任何文章的可能性。这就是它的工作原理:你喜欢某样东西,所以喜欢+,如果你再次喜欢,它会删除你以前喜欢的东西,就像在Youtube上一样,你不能得到无限多的东西。但它不能正常工作。当我已经处于一个喜欢这篇文章的阵营中时,它会再次写信给我,并进行计数器更新。但我会检查数组中的每个用户。发生了什么?多谢各位 public void likeProject(User user) { if(users_liked.size() == 0)

我正试图通过按下“喜欢”按钮,为我的web应用程序创造喜欢任何文章的可能性。这就是它的工作原理:你喜欢某样东西,所以喜欢+,如果你再次喜欢,它会删除你以前喜欢的东西,就像在Youtube上一样,你不能得到无限多的东西。但它不能正常工作。当我已经处于一个喜欢这篇文章的阵营中时,它会再次写信给我,并进行计数器更新。但我会检查数组中的每个用户。发生了什么?多谢各位

public void likeProject(User user)
{
    if(users_liked.size() == 0) // If the are no users who liked this article, write this user
    {
        users_liked.add(user);
        setLikes(getLikes() + 1);
    }

    else // This is for array, which already has users who pressed like button
    {
        for(int i = 0; i < users_liked.size(); i++)
        {
            if(!user.getId().equals(users_liked.get(i).getId())) // i liked it before, so my object is in an array, so this shouldn't be executed
            {
                users_liked.add(user); // Idk why, but this it's executes every time i press the like button. I'm already in an array
                setLikes(getLikes() + 1);
            }
        }
    }
}
public void-likeProject(用户)
{
if(users_liked.size()==0)//如果没有喜欢本文的用户,请编写此用户
{
用户添加(用户);
setLikes(getLikes()+1);
}
else//这是针对数组的,已经有用户按下了like按钮
{
对于(int i=0;i
回答:你的情况不对。

if(!user.getId().equals(users_liked.get(i).getId()))
如果类用户列表中有十个用户。对于您检查的用户,将根据上述条件至少检查十次。每次都会得到一个true,并将用户添加到列表中十次

Input user: 11
(Before)User Like List: 
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Check 1 != 11, add 11 to the list.
Check 2 != 11, add 11 to the list.
...
Check 10 != 11, add 11 to the list.
Check 11 != 11, pass.
Check 11 != 11, pass.
...
Check 11 != 11, pass.

(After)User Like List:
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]

赵英伟已经指出了问题所在。在我的回答中,我想提出一个代码更正;你可以这样做:

/。。。
否则{
int i=0;
对于(;i
干杯

编辑

为了提高我的回答和您的访问时间:如您所见,如果您使用数组作为数据结构来存储用户对象,您将始终必须遍历整个数组,以确保您要查找的用户对象不在数组中。因此,您总是需要迭代n次,即您的访问时间是O(n)(有n条记录)


要提高访问时间,请使用哈希映射(HashMap)和方法#containsKey(对象键):boolean。无论您有1000万条记录还是200万条记录,只要您的字符串标识符保持唯一,您的访问时间都保持不变O(1).

您的user.getId()返回的类型是什么?user.getId()返回什么?user\u喜欢的getId数组包含什么?@Janar id是一个字符串,这个数组包含一个名为User的java类,它有getter和setter,您只需要执行1。检查该用户是否已在“类用户”列表中。2.如果为真,则执行不同的逻辑。3.如果为false,则执行like逻辑(将用户添加到like列表等)