当前位置: 首页 > 面试题库 >

在链接列表的单个索引中存储多个数据项?

赵驰
2023-03-14
问题内容

我试图在链接列表的单个索引中存储多个数据项。我的教科书中的所有示例似乎都说明了每个索引仅添加1条数据。我假设有可能添加更多?

例如,使用Collections API存储整数我将执行以下操作:

LinkedList <Integer>linky = new LinkedList<Integer>();
int num1 = 2, num2 = 22, num3 = 25, num4 = 1337;
linky.add(num1);

如何将num2,num3和num4添加到列表中相同的第一个索引?多谢你们。


问题答案:

关于链接列表的工作方式似乎有些困惑。本质上,链接列表由节点组成,每个节点包含一个数据(一个对象,确切地说,该对象本身可以包含多个成员变量),以及到列表中下一个节点的链接(如果存在,则为空指针)没有这样的下一个节点)。您还可以有一个双向链接的列表,其中每个节点还具有指向列表中前一个节点的指针,以加快某些类型的访问模式

向单个节点添加多个“数据”听起来像在一个节点上添加多个链接,这会将您的链接列表变成N元

要以最常与链接列表关联的方式将多个数据添加到列表的末尾,只需执行以下操作:

LinkedList <Integer>linky = new LinkedList<Integer>();
int num1 = 2, num2 = 22, num3 = 25, num4 = 1337;
linky.add(num1);
linky.add(num2);
linky.add(num3);
linky.add(num4);

或者,如果您希望链表的每个节点都有几条数据

这些数据应打包成一个 对象 (通过定义一个class将它们全部作为成员变量的对象)。例如:

class GroupOfFourInts
{
   int myInt1;
   int myInt2;
   int myInt3;
   int myInt4;

   public GroupOfFourInts(int a, int b, int c, int d)
   {
     myInt1 = a; myInt2 = b; myInt3 = c; myInt4 = d;
   }
}

class someOtherClass
{

  public static void main(String[] args)
  {
    LinkedList<GroupOfFourInts> linky = new LinkedList<GroupOfFourInts>();
    GroupOfFourInts group1 = new GroupOfFourInts(1,2,3,4);
    GroupOfFourInts group2 = new GroupOfFourInts(1337,7331,2345,6789);
    linky.add(group1);
    linky.add(group2);
  }
}

现在,linky将有2个节点,每个节点将包含4 ints, myInt1myInt2myInt3myInt4

注意

以上都不是特定于链接列表的。每当您要将一堆数据作为一个单元存储在一起时,都应使用此模式。您创建一个类,该类具有要存储在一起的每个数据的成员变量,然后创建该类型的任何Java
Collections类型(ArrayList,LinkedList,TreeList等)。

确保要使用链接列表(因为在选择ArrayList或TreeList时不会因编程困难而受到惩罚)。这将取决于您的数据访问模式。链接列表提供O(1)的添加和删除,但提供O(n)的查找,而ArrayLists提供O(1)的查找,但是O(n)进行任意的添加和删除。TreeList提供O(log
n)插入,删除和查找。这些之间的权衡取决于您拥有的数据量以及如何修改和访问数据结构。

当然,如果列表中只包含<100个元素,那么这些都不重要;-)

希望这可以帮助!



 类似资料:
  • 问题内容: 在此先感谢您的帮助。 好吧,这就是我的情况。我有一个Web系统,该系统基于超声波计创建的样本进行一些与噪声相关的计算。最初,数据库仅存储这些计算的结果。但是现在,我被要求也自己存储样本。每个样本只是一个300或600个数字的列表,每个数字都有一个小数。 因此,我想到的最简单的方法是在表中添加一列,该列存储给定样本的所有计算。此列应包含数字列表。 那么我的问题是:将这一数字列表存储在单列

  • 我必须创建以下程序: 创建一个允许您键入名称的程序。用户键入并提交(使用enter键)的名称应存储在arraylist中。然后,arraylist中的名称应打印在屏幕上。 我的问题是,我只能在我的数组列表中存储一个名字。 我的代码: 第一个问题是,在键入一个名称并提交后,您不能键入任何内容,因此我必须重置输入,如使用整数值:

  • 我想知道是否有可能将不同流中的数据合并成一个流。通过合并,我的意思是将其添加到单独的列中,而不是添加到现有的列中。 到目前为止,我已经能够将数据收集到单独的地图中,如下面的示例所示。我认为我应该把这些地图合并成一张,但不确定如何去做,或者我是否做错了什么。 我做了一些搜索,在FlatMap、Concat等网站上找到了一些线索,但因为我对这条流还不熟悉 例如:列出数据-1

  • 问题内容: 我的问题是,我想在数据库中存储一个具有多个电话号码的人。对于单个数字变量,每个变量将只存储一个数字。 现在,如果我想添加另一个电话号码,它将创建另一个新记录,该记录具有相同的详细信息,但具有不同的号码。 我想一起显示所有这些数字。有人可以帮忙吗? 问题答案: 您可以使用第二个表来存储数字,并使用外键链接回去: 第二张表将保存数字… 然后,您可以获取像这样的数字… 这是一个简单的例子。如

  • 每个类都有一些独特的字段。所有最大的功能是:添加,更新,删除,查找,显示列表,保存,加载文件 -所以,首先我将创建一个名为Product的类,它有4个公共字段。以上课程将从产品延伸。 -然后,我想我可能会创建一个ComputerStore类,它有一个字段是items类型ArrayList。items存储所有的对象,这些对象是上述4个类的实例,但我不确定。

  • 我在从两个表中检索数据然后列出它们时遇到了一些问题。我想将用户的提要帖子和他们喜欢的活动全部列在一个列表中。 提要-用户帖子表 我想做的是:在活动墙中列出提要和类似用户的活动。 所以它应该输出如下(按时间戳desc排序): “这是用户A的帖子” 我的当前SQL: 然而,我的问题是我不知道如何链接这两个表,因为我的“feed”中的ID与“likes”中的ID不同