Java 集合 List和Set的区别

ListSet都是接口。它们都扩展了Collection接口。在这篇文章中,我们讨论了 java 中ListSet接口之间的差异。

List Vs Set

1)List是一个有序集合,它维护插入顺序,这意味着在显示列表内容时,它将按照它们插入列表的顺序显示元素。

Set是一个无序集合,它不保持任何顺序。 维护顺序的Set很少,例如LinkedHashSet(它按插入顺序维护元素)。

2)List允许重复,而Set不允许重复元素。如果您尝试将重复元素插入Set中,它将替换现有值,则Set的所有元素都应该是唯一的。

3)List实现: ArrayListLinkedList等。

Set实现: HashSetLinkedHashSetTreeSet 等。

4)List允许任意数量的空值。 Set最多只能有一个空值。

5) ListIterator可用于在两个方向(前向和后向)遍历List但是它不能用于遍历Se。我们可以使用迭代器(它也适用于List)来遍历一个Set

6)List接口有一个名为Vector 的遗留类,而Set接口没有任何遗留类。

何时使用Set和何时使用List

用法完全取决于要求:

如果要求只有唯一值,那么Set是您最好的选择,因为Set的任何实现仅维护唯一值。

如果需要维持插入顺序而不管双重性,则List是最佳选择。List接口的实现 – ArrayListLinkedList按其插入顺序对元素进行排序。

列表示例

import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;

public class ListExample {

 public static void main(String[] args) {
   List<String> al = new ArrayList<String>();
   al.add("Chaitanya");
   al.add("Rahul");
   al.add("Ajeet");
   System.out.println("ArrayList Elements: ");
   System.out.print(al);

   List<String> ll = new LinkedList<String>();
   ll.add("Kevin");
   ll.add("Peter");
   ll.add("Kate");
   System.out.println("\nLinkedList Elements: ");
   System.out.print(ll);
 }
}

输出:

ArrayList Elements: 
[Chaitanya, Rahul, Ajeet]
LinkedList Elements: 
[Kevin, Peter, Kate]

设置示例

import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;

public class SetExample {

  public static void main(String args[]) { 
    int count[] = {11, 22, 33, 44, 55};
    Set<Integer> hset = new HashSet<Integer>();
    try{
      for(int i = 0; i<4; i++){
         hset.add(count[i]);
      }
      System.out.println(hset);

      TreeSet<Integer> treeset = new TreeSet<Integer>(hset);
      System.out.println("The sorted list is:");
      System.out.println(treeset);
    }
    catch(Exception e){
        e.printStackTrace();
    }
  }
}

输出:

[33, 22, 11, 44]
The sorted list is:
[11, 22, 33, 44]
赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Java 集合