0

値のリンク リストを使用してハッシュ テーブルを作成するクラスがあります。キーが新しい場合、リンクされたリストが作成され、既に存在する場合はリストの最後に追加されます。何らかの理由で、 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);
    }

}
4

3 に答える 3