gpt4 book ai didi

Java:在LinkedList中的元素之后添加元素

转载 作者:行者123 更新时间:2023-11-29 10:10:34 25 4
gpt4 key购买 nike

如果列表已经包含该元素,我想在列表中的元素之后添加一个元素,否则我想将这个新元素添加到开头 的列表。

不知何故,下面的代码不起作用。

有什么建议吗?

这种方法是否正确地纠正了性能?

public class HelloWorld
{
public static void main(String[] args) {
LinkedList<Task> l =new LinkedList<Task>();

l.add(new Task("a"));
l.add(new Task("b"));
l.add(new Task("c"));

int index;

if((index = l.lastIndexOf(new Task("a"))) != -1){
l.add(++index, new Task("5"));
}else{
l.addFirst(new Task("6"));
}
System.out.println(l);
}
}

class Task{
String value;

Task(String v){
value = v;
}

public boolean equals(Task t){
return t.value.equals(this.value);
}

public String toString(){
return this.value;
}
}

输出产生: [6,a,b,c]

预期输出: [a,5,b,c]

最佳答案

您没有在您的 Task 类中覆盖 Object#equals

您需要使用Object 对其进行参数化,否则就是重载。

这又不允许您的 new Task("a") 等于 new Task("a"),作为 Object。而是调用了 equals,并且引用不匹配。

这反过来会削弱您的 lastIndexOf 调用并产生意外结果。

示例

@Override
public boolean equals(Object obj) {
// TODO your code, i.e. based on the "value" field
}

如果您使用的是 IDE(我推荐),您将拥有允许根据所需属性起草 equals(和 hashCode)实现的功能。

关于Java:在LinkedList中的元素之后添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528751/

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