gpt4 book ai didi

java - 如何为linkedList中的每个节点或数据存储/生成整数ID?

转载 作者:行者123 更新时间:2023-12-02 09:10:30 26 4
gpt4 key购买 nike

我正在解决一个问题,并决定使用 linkedList 来简化它。我已经在第一个、最后一个和第一个位置创建了插入。 现在让我们首先关注插入,这就是我想要实现的目标,每当我将一个值插入到列表中时,我还想存储一个唯一的ID。这样当我想要搜索时对于特定的元素,我只需使用 ID 即可获得我正在寻找的元素。我在这里使用 JAVA 语言,并创建了供引用的 Node 类和包含我的功能的 LinkedList 类。请注意,ID 应该是一个 int 值,例如,如果我们将第一个项目插入列表,则其 ID 应该为“1”,依此类推。这是我的 Node 类:

public class Node {

private int data;
private int id;
private Node next;

public Node(int data, Node next, int id) {
this.data = data;
this.next = next;
this.id = id;
}

public Node() {}

public int getData() {
return data;
}

public void setData(int data) {
this.data = data;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}
}

这是我的 insertAtFirst(int data) 方法:

public void insertAtFirst(int data) {

Node newNode = new Node();
newNode.setData(data);
ID++;
newNode.setId(ID);

newNode.setNext(head);
head = newNode;
size++;
}

最佳答案

您可以创建私有(private)静态值,该值在创建实例时自动分配给每个实例。这是可行的,因为所有 SomeNode 类的 ID 静态源都是相同的。

      String letters = "ABCDEFGHIJK";
List<SomeNode> list = new LinkedList<>();
for (int i = 0; i < 10; i++) {
list.add(new SomeNode(letters.substring(i,i+1)));
}
list.forEach(node->System.out.println(node.getInfo() + " " + node.getID()));


class SomeNode {
private static int ID = 1;
private int id;
String info;
public SomeNode(String info) {
this.info = info;
this.id = ID++;
}
public int getID() {
return id;
}
public String getInfo() {
return info;
}
}

请注意,如果您使用线程,这可能会出现问题,因为重复的 ID 可能会分配给两个不同的实例。因此,您可能需要查看 Atomic 类(例如 AtomicInteger)以及synchronization

关于java - 如何为linkedList中的每个节点或数据存储/生成整数ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59460932/

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