java - 在Java中如何检查一个对象是否在链表中?

标签 java

下面是我的类(class)。 insertSymbol 方法应该将一个对象添加到链表中,然后将其添加到哈希表中。但是当我打印哈希表的内容时,它有双条目。我尝试使用“if(temp.contains(value)){return;}”来纠正此问题,但它不起作用。我读到我需要在几个地方使用@override。谁能帮助我知道如何以及在哪里使用覆盖?谢谢!

import java.util.*;

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


    public void insertSymbol(String key, SymbolTableItem value){
        LinkedList<SymbolTableItem> temp = new LinkedList<SymbolTableItem>();
        if(SymbolTable.get(key) == null){
            temp.addLast(value);
            SymbolTable.put(key, temp);
        }else{
            temp = SymbolTable.get(key);
            if(temp.contains(value)){
                return;
            }else{
                temp.addLast(value);
                SymbolTable.put(key, temp);
            }
        }
    }   

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

    public boolean isBoolean(){
        return true;
    }

    public boolean isTypeMatching(){
        return true;
    }

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

}

最佳答案

这里有多种选择。您至少需要向您的类添加一个 equals(因此还需要一个 hashcode)方法。

但是,如果您希望您的集合仅包含独特的项目,为什么不使用 Set反而?

如果你仍然想使用List,你可以使用你当前的方法,只是Set的特点是Set中的所有项目都是唯一的,所以Set在这里可能有意义。

添加 equals 方法可以很容易地完成。 Apache Equalsbuilder这是一个很好的方法。

关于java - 在Java中如何检查一个对象是否在链表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533876/

相关文章:

java - 广度优先搜索算法JAVA 8-puzzle

java - 引用字符串数组中的前一个字符串

java - 只需将 twitter4j-core-3.0.5.jar 添加到 net beans 和 maven 中的应用程序类路径中

java - Dozer - 在转换器之后调用映射器

java - 您能否在不显式列出它们的情况下从命令行运行包中的所有 JUnit 测试?

java - 在 Java 中使用扭曲的子类化构建器模式

具有约定优于配置功能的 Java 依赖注入(inject)框架

java - 从 arrays.xml 文件转换问题获取 ArrayList<String>

java - 获取声明的方法 - Java

java - 在java中组合两个图像?