gpt4 book ai didi

java - 为什么 Java 中的 addLast() 替换了我的链表?

转载 作者:行者123 更新时间:2023-12-01 18:46:39 24 4
gpt4 key购买 nike

我有一个类,它应该创建一个带有值链接列表的哈希表。如果 key 是新的,它会创建一个链接列表,如果它已经存在,则应该将其附加到列表的末尾。由于某种原因,当我使用 addLast() 时,它会替换列表的内容。你能看到我做错了什么吗?这是我的代码。谢谢!

import java.util.*;

public class Semantic {
String currentScope;
Stack theStack = new Stack();
HashMap<String, LinkedList> SymbolTable= new HashMap<String, LinkedList>();


public boolean insertSymbol(String key, SymbolTableItem value){
LinkedList<SymbolTableItem> temp = new LinkedList<SymbolTableItem>();
SymbolTableItem obj;
if(!isContained(SymbolTable.get(key), value)){
if(SymbolTable.get(key) != null){
temp = SymbolTable.get(key);
}
temp.addLast(value);
SymbolTable.put(key, temp);
return true;
}
return false;
}

public boolean isContained(LinkedList list, SymbolTableItem obj){
if(list == null) return false;
while(!list.isEmpty()){
SymbolTableItem item;
item = (SymbolTableItem) list.removeFirst();
if(item.equals(obj))
return true;
}
return false;
}

public String printValues(){
return SymbolTable.toString();
}

public boolean isBoolean(){
return true;
}

public boolean isTypeMatching(){
return true;
}

public void stackPush(String theString){
theStack.add(theString);
}

}

最佳答案

方法 isContained 删除搜索元素 SymbolTableItem obj 之前的所有元素(包括搜索元素)。

如果obj最后出现在LinkedList中,那么所有内容都将被删除。

关于java - 为什么 Java 中的 addLast() 替换了我的链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538297/

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