gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:47:32 25 4
gpt4 key购买 nike

下面是我的类(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/

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