当前位置: 首页 > 知识库问答 >
问题:

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

华星剑
2023-03-14

我正在处理一个问题,并决定使用linkedList使其变得容易。我已经创建了插入在第一,最后和在位置。现在,让我们首先关注插入,这是我想要实现的,每当我将一个值插入到列表中时,我想同时存储一个唯一的ID。因此当我想搜索一个特定的项目时,我只需使用ID并获得我正在寻找的want。我在这里使用的是Java语言,并创建了可供参考的Node类和保存我功能的LinkedList类。注意,ID应该是一个int值,例如,如果我们在列表中插入第一个项目,它的ID应该是“1”,依此类推。这里是我的节点类:

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++;
    }

共有1个答案

谯皓君
2023-03-14

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

      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可能被分配给两个不同的实例。因此您可能需要查看原子类(例如AtomicInteger)以及同步

 类似资料:
  • 这里的问题是什么?。我正在尝试实现图数据结构,使用邻接列表,通过使用来自util包的集合。这里 包含一些整数的LinkedList数组。LinkedList的每个元素都包含另一个类型为:node的LinkedList。 但在编译过程中,它表示不兼容类型。如何解决这个问题?

  • 问题内容: 在另一个Bruce Eckels演习中,计算速度,其中s和t是整数。我如何做到这一点,以便该部门提高浮力? 问题答案: 只需先将两个操作数之一转换为浮点数即可。 演员表的优先级高于分区,因此发生在分区之前。 另一个操作数将由编译器自动有效地强制转换为浮点数,因为规则指出,如果另一个操作数为浮点型,则即使另一个操作数是整数,该操作也将是浮点运算。

  • 我最近正在评估图形数据库或任何其他数据库的一个特定要求: 通过一个查询中节点的直接子节点及其所有直接和间接子节点的聚合属性检索每个节点的前n个子节点的能力。结果应返回正确的层次结构。 实例 < code >每个节点都有一个属性,即它有多少个直接子节点。并且该树不超过8层。假设我想运行整个树的查询,通过每个级别的所有节点,它的前2个子节点有最多的直接和间接子节点。它将为我们提供以下信息: 我想知道是

  • 问题内容: 如何生成5个唯一的随机数? 现在我有类似的东西 结果可能如下所示: 这些数字必须唯一且经过排序,因此看起来像: 任何的想法? 问题答案: 如果范围很小,并且有一个整数表,则可以使用一种幼稚的方法:

  • 本文向大家介绍如何生成一个随机数?相关面试题,主要包含被问及如何生成一个随机数?时的应答技巧和注意事项,需要的朋友参考一下  

  • 这有点难以解释,但基本上,我很难为一个数字的每一个数字添加单词“really”。 所以就像 “那是一个真的(真的数量取决于一个数字的位数)大数字!” 所以如果我把1563块印出来 这是一个真的真的真的真的很大的数字!