gpt4 book ai didi

java - 为什么java在Spring框架中不能正确执行if-else语句?

转载 作者:行者123 更新时间:2023-12-02 11:38:53 24 4
gpt4 key购买 nike

我正在尝试为我的网络应用程序创造通过按“喜欢”按钮来喜欢任何文章的可能性。这就是它的工作原理:你喜欢某个东西,所以喜欢++,如果你再次喜欢,它会删除你以前的喜欢,就像在 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);
}
}
}
}

最佳答案

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

// ...
else {
int i = 0;
for(; i < users_liked.size(); i++) {
if(!user.getId().equals(users_liked.get(i).getId())) {
continue;
} else {
// user found! unlike and process etc. etc.
break;
}
}
if (i == users_liked.size()) {
// After traversing the array we didn't find the specified user
// Add user to list and process likes
users_liked.add(user);
setLikes(getLikes() + 1);
}
}
// ... etc. etc.

干杯!

编辑

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

要缩短访问时间,请改用 HashMap (HashMap ) 和方法 #containsKey(Object key):boolean。无论您有 1000 万还是 200 万条记录,您的访问时间都保持恒定 O(1) – 前提是您的字符串标识符保持唯一。

关于java - 为什么java在Spring框架中不能正确执行if-else语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48723998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com