Difference between Array List and Linked List
在我们进入实际差异之前,让我们先了解一下它们到底是什么?
我们在数学中遇到了集合的概念,这里的集合多少有相同的含义。是的,它是元素的集合,在大多数情况下,是相似元素的集合。您可以尝试将这些元素添加到集合中,并尝试打印以了解它的实际存储方式。
输入一组:20,50,10,30。
它实际上存储在一个集合中,即10、20、30、50。
元素在这里排序,并不是按**顺序存储的。这是Set的特性之一,它总是在存储之前对元素进行排序,当然,也有例外,其中之一就是LinkedhashSet,因为它维护元素的**顺序。
在计算机术语中,集合包含很少的附加属性,例如方法和继承。方法就像函数一样,它们执行某些任务,例如添加、删除或遍历元素集。我们大多数人都知道“继承”这个词,这里的意思也是一样的。是的,我们可以从它的集合中继承一个方法,这样它就可以与Set接口一起使用。我们再次讨论一个新的术语,即集合接口,它只不过是包括方法在内的整个元素集合。
为了更好地理解,我们用它的语法表示了一个集合。从下面的语法中,您可以识别不同类型的集合,例如HashSet和TreeSet。
import java.util.*;
public class Setexample {
public static void main(String args[]) {
int count[] = {34, 22,10,60,30,22}{25, 17, 76, 12, 88, 57};
Set<Integer> set = new HashSet<Integer>();
try {
for(int i = 0; i < 5; i++) {
set.add(count[i]);
}
System.out.println(set);
TreeSet sortedSeteg = new TreeSet<Integer>(set);
System.out.println(“Here we have the sorted output:”);
System.out.println(sortedSeteg);
System.out.println(“Look at the First element: “+ (Integer)sortedSet.first());
System.out.println(“Look at the last element: “+ (Integer)sortedSet.last());
}
catch(Exception e) {}
}
}
以上代码的输出如下。
[25, 17, 76, 12, 88] Here we have the sorted output: [12, 17, 25, 76, 88] Look at the First element: 12 Look at the last element: 88
列表扩展集合的方式与集合类似,但它保持**顺序。您可以尝试将以下名称添加到列表中,并查看如何将其添加到列表中。
输入一个列表:约翰,南希,玛丽,爱丽丝。
如何存储在列表中:约翰、南希、玛丽、爱丽丝。
请注意它们的**顺序。您可以确定“John”是输入和输出中的第一个元素,后面跟名称的**顺序相同。我们甚至可以认为这是列表的主要属性之一。
让我们看看下面语法中的一些List方法,比如ArrayList和LinkedList。
import java.util.*; public class Collecti***sample {
public static void main(String[] args) {
List a1 = new ArrayList(); a1.add(“John”); a1.add(“Nancy”); a1.add(“Mary”); a1.add(“Alice”); System.out.println(” ArrayList Elements are”); System.out.print(“\t” + a1);
List l1 = new LinkedList(); l1.add(“Silvia”); l1.add(“Arjun”); l1.add(“Deepika”); l1.add(“Susan”); System.out.println(); System.out.println(” LinkedList Elements are”); System.out.print(“\t” + l1); }}
以上语法的输出如下。
ArrayList Elements are
[John, Nancy, Mary, Alice]
LinkedList Elements
[Silvia, Arjun, Deepika, Susan]
从上面的代码可以清楚地看出,ArrayList和LinkedList都保持**顺序。
集合和列表有自己的方法,下面让我们来看看其中的几个。
序号 | 集合–方法 | 列表–方法 |
1. | add()–将对象添加到集合中。 | void add(int index,Object obj)–它将对象“obj”添加到调用列表的指定“index”处,并确保不会通过移动前面的元素来覆盖任何元素。 |
2. | clear()–从集合中移除对象。 | boolean addAll(int index,Collection c)–它将整个集合“c”添加到调用列表和指定的“index”处。它还确保不覆盖任何元素。我们还可以通过检查返回值来检查其操作的正确性。如果更改成功,则返回“true”,否则返回值“false”。 |
3. | contains()–检查集合中是否包含某个对象。如果对象存在于集合中,则返回值“true”。 | Object get(int index)–返回指定“index”处的元素或对象。 |
4. | isEmpty()–确定集合中没有元素时是否有帮助。如果没有元素,则返回值“true”。 | int lastIndexOf(Object obj)–其工作原理与indexOf()方法的相反。它返回指定对象“obj”的最后一次出现,如果列表中没有此类对象,则返回值“1”。因此,它也可以用作Set接口的contains()方法。 |
6. | remove()–通过将元素指定为方法的参数,从集合中移除元素。 | ListIterator ListIterator()–它返回列表起始索引的迭代器。 |
7. | size()–计算集合中对象或元素的数量。 | ListIterator ListIterator(int index)–它有助于从指定的“index”开始遍历调用列表。 |
8. | – | objectremove(int index)–它删除指定“index”处的对象,并返回已删除的元素作为结果。它还减少结果列表索引以反映删除。 |
9 | – | 对象集(int index,Object obj)–将对象“obj”分配给指定“index”处的调用列表。 |
10 | – | List subList(int start,int end)–在调用该方法的列表中包含从索引“start”到索引“end”的对象。 |
集合从不保持元素**到集合中的顺序,而列表则保持该顺序。LinkedHashSet有一个例外,因为它维护**顺序,但另一个集合(如HashSet和TreeSet)在存储元素之前对元素进行排序。下面举例说明。
设置输入:猫,娃娃,苹果。
储存为:苹果,猫,娃娃。
列表输入:猫,娃娃,苹果。
储存为:猫,娃娃,苹果。
集合不允许重复,而列表允许重复。如果必须将重复值添加到列表中,则该值将被覆盖。查看样本中的集合和列表重复项。
设置输入:10,20,20,50。
存储为:10、20、50。
列表输入:10,20,20,50。
存储为:10、20、20、50。
一个集合只能有一个空值,而一个列表可以有多个空值,并且不限于任何数字。
设置输入:空,空,人,狗,飞机。
存储为:空,狗,人,飞机。
列表输入:null,null,Man,Dog,Plane。
存储为:空,空,人,狗,飞机。
迭代器方法可以很好地处理Set和List,而ListIterator方法只能处理List。ListIterator可用于向前或向后遍历列表。
集合没有遗留类,而列表接口有一个称为“vector”的遗留类。向量使用列表接口,因此保持**顺序。由于同步的努力,向量在添加、删除和更新方面的性能稍慢。
集合实现中很少有HashSet、LinkedHashSet和TreeSet。List的实现很少包括ArrayList和LinkedList。
Set和List的用法完全取决于**顺序的维护要求。正如我们了解到的,集合从不保持**的顺序,当顺序不太重要时,可以使用它。同样,在需要保持**顺序时,也可以使用列表。
序号 | 差异 | 套 | 列表 |
1. | **顺序 | 它保持**顺序。第一个**的值保留在第一位,依此类推,而不考虑其值。 | 它从不保持**顺序。 |
2. | 方法 | 它使用add()、clear()、contains()、isEmpty()、remove()和size()等方法。 | 它使用add()、addAll()、get()、lastIndexOf()、ListIterator()和remove()、set()以及subList()等方法。 |
3. | 复制品 | 它从不允许重复,在这种情况下,值会被覆盖。 | 它允许复制。 |
4. | 空值 | 它最多只能有一个空值。 | 它可以有任意数量的空值。 |
5. | 迭代器()和listIterator()的使用 | 它只使用iterator()方法。 | 它同时使用iterator()和listIterator()。 |
6. | 遗留类的存在 | 没有遗留类。 | 它有一个称为向量的遗留类。 |
7. | 启动位置 | 集合接口实现中很少有HashSet、LinkedHashSet和Tree Set。 | 列表接口实现中很少有LinkedList和ArrayList。 |
希望,我们已经包括了布景和单子之间所有可能的差异。如果您觉得我们遗漏了什么,请务必告诉我们。
...合不允许重复。 目录 1. 概述和主要区别 2. 什么是列表 3.设置了什么 4. 列表与集合的相似性 5. 并列比较-以表格形式列出与设置 6. 摘要 什么是列表(list)? 列表是扩展集合接口的接口。集合接口中有许多方法。add方法有助于添加...
...令是set、add、append等。“set”命令用于为新的或现有的键设置一个新值。“add”命令用于为新键设置值。“replace”命令用于替换现有键的值。“append”命令可以向现有键添加一些数据。“get”、“delete”是检索命令。“get”命...
...用户在另一端解码和观看。 什么是机顶盒(a set-top box)? 设置盒是一种接收数字信号、解码并在电视显示器上显示的设备。接收到的信号可以是电视信号或因特网数据信号。信号可以通过电缆或电话连接接收。过去,机顶盒主要...
...有几种方法可以检查最新的主要更新安装日期。 如何在设置中检查主要更新安装日期 首先,打开“开始”菜单,单击齿轮图标打开“设置”。您也可以按键盘上的Windows+i。 在“设置”窗口中,单击“系统” 在“系统”窗格...
...到各种不需要的背景噪音。请记住,您可以使用按键通话设置将麦克风静音,直到您准备好讲话。 一键通设置以前位于Steam设置菜单下,但它在朋友列表设置菜单中找到了一个新家。要访问此菜单,请在您的计算机上启动Steam应...
...hing! Sincerely, Mailing List Blues 别对自己太苛刻,你可以在“设置”菜单中查看所有的“长寿日”,但你什么也找不到。Gmail确实有一个邮件列表功能,但他们肯定不会宣传它,而且它甚至不是真正的Gmail系统的一部分。 无论你是否...
...***-&gt;Enabled add-***-&gt;Program add-***(系统-&gt;设置-&gt;加载项-&gt;程序加载项)来确认加载项的状态,您应该在其中看到PseudoTV live的条目。如果单击条目,您将看到该条目的附加信息面板。 为了让PsuedoTV Live...
...把一切都准备好了,看上面的视频或者阅读下面的步骤来设置一切。第一步:输入你的信息要设置恢复脚本,需要在config文件(名为config.php)中输入一组信息。在下载的脚本文件夹中找到它,然后在任何纯文本编辑器中打开它...
...代码复制到框中:告诉应用程序“Finder”将selection\u list设置为selection if(count selection\u list)&lt;1然后显示对话框¬ "请选择一个从磁盘映像装入的卷¬ "找不到带有图标“停止”的“选择”¬ 按钮[“确定”]默认按钮1返回结束...