[英]HashMap is creating many instances of itself inside itself
如您所見,hashmap正在創建其自身的許多實例,但我不確定為什么,這是我正在使用的類的代碼,
private Map<String, Integer> userAttempts;
private static final int MAX_USER_ATTEMPTS = 3;
public UserAttempts()
{
userAttempts = new HashMap<>();
}
public boolean isUserAttemptsAvaliable(String username)
{
if (!userAttempts.containsKey(username))
{
userAttempts.put(username, 0);
return true;
}
int attempts = userAttempts.get(username);
if (attempts != MAX_USER_ATTEMPTS)
{
userAttempts.replace(username, attempts++);
return true;
}
return false;
}
我正在用jUnit測試來測試此代碼,看起來像這樣,
@Test
public void testIsUserAttemptsAvaliable2()
{
attempts.isUserAttemptsAvaliable("Name");
assertTrue(attempts.isUserAttemptsAvaliable("Name"));
}
我不確定為什么會這樣,有人知道嗎?
基本上,您只是在調試器中感到困惑。
HashMap
具有一個條目集-並且該條目集引用了包含的地圖。 您在調試器中所做的所有事情都是從地圖導航到條目集,再回到地圖,再回到條目集等。
您可以在自己的類中看到完全相同的效果,如下所示:
public class Outer
{
private Inner inner = new Inner();
// Inner class, with implicit reference to "containing" Outer
public class Inner
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.