У меня есть класс, который должен создать хеш-таблицу со связанным списком для значений. Если ключ новый, он создает связанный список, и если он уже существует, он должен добавить его в конец списка. По какой-то причине, когда я использую addLast(), он заменяет содержимое моего списка. Вы видите, что я делаю неправильно? Вот мой код. Спасибо!Почему addLast() в Java заменяет мой связанный список?
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);
}
}
Вы должны параметризовать свой 'LinkedList' соответствующим образом, это может сделать вашу жизнь проще. – arshajii
Вы имеете в виду, по-другому, что в том числе класс Linked в декларации? Не могли бы вы привести мне пример? – bstrong
у вас много проблем ... используйте 'contains' вместо' get (key) ', потому что HashTable не принимает значение null, и вам не нужно добавлять его снова при изменении связанногоList – nachokk