是什么设置和列表之间的区别?是什么设置和列表之间的区别?(What is the differenc

2019-05-13 16:43发布

有什么根本的区别Set<E>List<E>接口?

Answer 1:

List是元素的有序序列,而Set为元素的独特列表,它是无序(谢谢你, 奎因·泰勒 )。

List<E>:

有序的collection(也称为序列)。 此接口的用户具有其中列表中的每个元素被插入在精确的控制。 用户可以通过他们的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

Set<E>:

不包含重复元素的集合。 更正式地,集包含没有对元素e1和e2,使得e1.equals(E2),和至多一个空元素。 正如其名称所暗示,此接口模型的数学抽象集合。



Answer 2:

╔═══════════════════╦══════════════════════╦═════════════════════════════╗
║                   ║         List         ║            Set              ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║     Duplicates    ║          YES         ║            NO               ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║       Order       ║       ORDERED        ║  DEPENDS ON IMPLEMENTATION  ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Positional Access ║         YES          ║            NO               ║ 
╚═══════════════════╩══════════════════════╩═════════════════════════════╝


Answer 3:

元素的有序列表(唯一与否)
符合Java的接口命名List
可以通过索引访问

implemetented使用

  • 链表
  • 数组列表

独特的元素列表:
符合Java的接口命名Set
无法通过索引访问

implemetented使用

  • HashSet的(无序)
  • LinkedHashSet(有序)
  • TreeSet中(通过自然顺序或通过提供比较器进行排序)

这两个接口Set ,并List符合Java的接口命名的Collection



Answer 4:

A设置不能包含而列表可以重复的元素。 一览表(在Java中)也暗示着秩序。



Answer 5:

  • 列表是项目的有序分组
  • A设置是允许的,没有重复项的无序分组(通常情况下)

从概念上讲,我们通常所说的无序分组,允许重复作为一个袋子,不允许重复是一个集合。



Answer 6:

名单

  1. 是元素的有序分组。
  2. 列表用于与重复元素的集合。
  3. 新方法是List接口中定义。

  1. 是元素的无序分组。
  2. 集用于元素集合没有重复。
  3. 没有新的方法Set接口中定义的,所以我们必须使用Collection接口方法只适用于设置子类。


Answer 7:

列表:

List小号通常允许重复的对象。 List s必须是有序的,并因此通过索引访问。

实现类包括: ArrayListLinkedListVector

组:

Set不要让重复的对象。 大多数的实现是无序的,但它是特定的实现。

实现类包括: HashSet (无序的), LinkedHashSet (订购), TreeSet (通过自然顺序或由比较器提供的订购)



Answer 8:

正如我们所谈论的Java接口,为什么不看的Javadoc?!

  • List是有序集合(序列),其通常允许重复
  • Set一集是不包含重复的元素,迭代顺序可以通过实施保障

有一个关于缺乏关于顺序设置的不提:这取决于执行。



Answer 9:

这可能不是你要找的答案,但Collections类的JavaDoc实际上是相当描述。 复制/粘贴:

有序的collection(也称为序列)。 此接口的用户具有其中列表中的每个元素被插入在精确的控制。 用户可以通过他们的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

set不同,列表通常允许重复的元素。 更正式地说,列表通常允许E1元素对和e2,使得e1.equals(E2),它们通常允许多个null元素,如果他们允许的null元素。 这是不难想象,有人可能希望实现禁止复制,当用户试图插入抛出运行时异常的列表,但我们希望这种用法是罕见的。



Answer 10:

一组是不同的对象的无序组 - 没有重复的对象是允许的。 它是利用被插入的对象的哈希码通常实现。 (具体实现可以添加顺序,但Set接口本身并没有。)

列表是可包含重复对象的有序组。 这可能与实现ArrayListLinkedList ,等等。



Answer 11:

1.List允许重复值,并设置一点儿也不允许重复

2.List维持在其中插入到列表中设置一点儿也不维持秩序元素的顺序。 3.List是元素的有序序列,而Set是它是无序的元素的不同列表。



Answer 12:

列表:
列表允许重复的元素和空值。 容易搜索使用的元件的对应的索引,并且还它会显示在插入顺序的元件。 例如:(链表)

import java.util.*;

public class ListExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Integer> l=new LinkedList<Integer>();
    l.add(001);
    l.add(555);
    l.add(333);
    l.add(888);
    l.add(555);
    l.add(null);
    l.add(null);

    Iterator<Integer> il=l.iterator();

    System.out.println(l.get(0));

    while(il.hasNext()){
        System.out.println(il.next());
    }

    for(Integer str : l){
        System.out.println("Value:"+str);
    }
 }

}

输出:

1
1
555
333
888
555
空值
空值
价值:1
价值:555
价值:333
价值:888
价值:555
值:空
值:空

组:
组不允许任何重复的元素,它允许单无效value.It不会保留任何为了显示elements.Only TreeSet会以升序显示。

例如:(TreeSet中)

import java.util.TreeSet;

public class SetExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    TreeSet<String> set = new TreeSet<String>();
    try {
        set.add("hello");
        set.add("world");
        set.add("welcome");
        set.add("all");

        for (String num : set) {
            System.out.println( num);

        }
        set.add(null);
    } catch (NullPointerException e) {
        System.out.println(e);
        System.out.println("Set doesn't allow null value and duplicate value");
    }

 }

}

输出:

所有
你好
欢迎
世界
显示java.lang.NullPointerException
设置不允许空值和重复值



Answer 13:

所有的List类保持插入的顺序。 他们使用基于性能等特性的不同实现(例如ArrayList特定指数,访问速度LinkedList的简单维持秩序)。 由于没有钥匙,允许重复。

Set类不维护插入顺序。 它们可任选地施加一个特定的顺序(与SortedSet ),但通常具有基于某种散列函数实现定义的顺序(与HashSet )。 由于Set S被键访问,不允许重复。



Answer 14:

清单Vs的设置

1)将不允许重复。 列表允许复制。 基于集的实现,它也保持了插入顺序。

例如: LinkedHashSet 。 它保持插入order.Please参考点击这里

2) 含有方法。 由该组的性质,它会给访问更好的性能。 最好的情况下它的O(1)。 但是,列表中包含了性能问题调用contains



Answer 15:

订购......名单有一个顺序,一组则没有。



Answer 16:

在Java中List和Set之间几注值得的差异,给出如下:

1)List和Set在Java中,允许重复元素之间的根本区别。 在Java列表允许重复而设置不允许任何重复。 如果插入组副本将取代旧的价值。 在Java中集的任何实施将只包含独特的元素。

2)在Java中List和Set之间的另一个显著差异是秩序。 列表是一个有序集合,而集合是一个无序的集合。 列表保持元件的插入顺序,是指被插入之前将继续较低折射率比其之后插入的任何元件的任何元件。 坐落在Java没有任何维持秩序。 虽然集提供所谓的SortedSet另一替代,其可以存储在由存储在对象集可比和比较方法中定义的特定排序顺序设置的元件。

3)在Java中流行的实现List接口的ArrayList中包括,矢量和LinkedList。 尽管流行的实现Set接口的HashSet的包括,TreeSet中和LinkedHashSet。

它很清楚,如果你需要保持插入顺序或对象,你收集可以包含重复比名单是很长的路要走。 在如果你的要求是保持独特的收藏比没有设置任何重复另一方面是要走的路。



Answer 17:

列表:

  1. 允许重复。
  2. 在分组元素进行排序。(在具有明确order.No需要换句话说,以升序排列)

组:

  1. 不允许重复。
  2. 在无序分组元素。(在不具有明确的order.It换言之可能或可能不以升序排列)


Answer 18:

Set<E>List<E>都用于存储类型的元素E 。 不同的是, Set存储在无序的方式,不允许重复的值。 List用于存储有序的方式元素和它允许重复值。

Set元素不能被索引位置进行访问,并且List元素可以用索引位置进行访问。



Answer 19:

嗨这么多的答案已经given..Let我指出这是迄今没有提到的一些要点:

  • 大多数List实现的(ArrayList中,矢量) 实现RandomAccess接口,这是为快速访问的标记接口。 设置实现没有做到这一点。
  • 列表使用一个叫做特殊的迭代ListIterator 支持双向迭代 。 设置使用迭代器仅支持1路迭代
  • HashSet的需要5.5倍的ArrayList 多个存储器 ,用于存储相同数量的元素。


Answer 20:

这里北京时间用Groovy一个明显的例子。 我创建了一个集和列表。 然后我尝试存储每个列表内20随机生成值。 所生成的值可以是范围为0〜5

s = [] as Set
l = []

max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}


println "\n"
println "Set : $s "
println "list : $l

结果 :

随机编号: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

[4, 1, 0, 2, 3]

列表: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

你可以看到,不同之处在于:

  • 设置不允许重复的值。
  • 列表允许重复的值。


Answer 21:

像答案SET没有重复的值和列表可以。 当然,为了是另外一两件事,不同的他们分开。



Answer 22:

设置:一组不能在其藏品重复的元素。 它也是一个无序的集合。 要访问设置数据,它只是和索引检索基于使用迭代器需要是不可能的了。 它主要用于在需要时唯一集合。

名单:名单可以有重复的元素,与自然,因为它是插入排序。 因此,可以检索基于索引或迭代的数据。 它被广泛用于存储收集这就需要根据索引来访问。



Answer 23:

主题名称:列表VS套装

我刚刚通过Java的所谓集合框架最重要的话题了。 我认为分享你我的收藏小知识。 列表中,设置,地图是它的最重要的课题。 因此,让我们先从List和Set。

List和Set的区别:

  1. 名单是延伸的集合类AbstractList课堂,作为集是延伸的集合类AbstractSet类,但都实现了Collection接口。

  2. List接口允许重复值(元素),而Set接口不允许重复的值。 在设置重复元素的情况下,替代老旧的值。

  3. List接口允许NULL值,其中为Set接口不允许Null值。 在设置使用空值的情况下,它给人NullPointerException

  4. List接口保持插入顺序。 这意味着,我们在我们得到它使用迭代器或换每种款式相同的方式添加在列表中的元素的方式。 而Set的实现并不一定保持插入顺序。 (虽然SortedSet确实使用TreeSet ,和LinkedHashSet保持插入顺序)。

  5. List接口有定义的,而Set接口没有自己的方法,以便设置只使用了Collection接口方法,它自己的方法。

  6. List接口有一个称为传统类Vector ,而Set接口没有任何遗留类

  7. 最后但并非最不重要的... listIterator()方法只能通过列表类内的元素使用周期,而我们可以使用iterator()方法来访问集合类元素

还有什么可我们添加? 请告诉我。

谢谢。



Answer 24:

组:

不能有重复的值排序取决于执行。 默认情况下,它不下令不能有通过索引访问

列表:

可以在默认情况下有序重复的值可以通过索引访问



文章来源: What is the difference between Set and List?
标签: java list set