java中HashSet、LinkedHashSet、TreeSet、ArrayList、ArrayDeque、LinkedList使用区别

HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;

LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代;  

TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。

ArrayList 顺序表存储,访问快,插入和删除慢。

ArrayDeque 双向顺序存储,集成栈和队列方法,访问快,插入和删除慢。

LinkedList 双向链式表,集成栈和队列方法,访问慢,插入和删除快。

package collections; 

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.HashSet;  
import java.util.LinkedHashSet;  
import java.util.TreeSet;  
  
/**  
 *  @description 几个set的比较  
 *    HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;  
 *    LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代;  
 *    TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。   
 *    ArrayList 顺序表存储,访问快,插入和删除慢
 *    ArrayDeque 双向顺序存储,集成栈和队列方法,访问快,插入和删除慢
 *    LinkedList 双向链式表,集成栈和队列方法,访问慢,插入和删除快
 */  
public class SetDemo {  
  
    public static void main(String[] args) {  
  
        HashSet<String> hs = new HashSet<String>();  
        hs.add("B");  
        hs.add("A");  
        hs.add("D");  
        hs.add("E");  
        hs.add("C");  
        hs.add("E");  
        System.out.println("HashSet 顺序:\n"+hs);  
          
        LinkedHashSet<String> lhs = new LinkedHashSet<String>();  
        lhs.add("B");  
        lhs.add("A");  
        lhs.add("D");  
        lhs.add("E");  
        lhs.add("C");  
        lhs.add("E");  
        System.out.println("LinkedHashSet 顺序:\n"+lhs);  
          
        TreeSet<String> ts = new TreeSet<String>();  
        ts.add("B");  
        ts.add("A");  
        ts.add("D");  
        ts.add("E");  
        ts.add("C");  
        ts.add("E");  
        System.out.println("TreeSet 顺序:\n"+ts);  
        
        ArrayList<String> al = new ArrayList<String>();
        al.add("B");  
        al.add("A");  
        al.add("D");  
        al.add("E");  
        al.add("C");  
        al.add("E");
        System.out.println("ArrayList 链表顺序:\n"+al);
        
        ArrayDeque<String> ad = new ArrayDeque<String>();
        ad.push("B");
        ad.push("A");
        ad.push("D");
        ad.push("E");
        ad.push("C");
        ad.push("E");
        System.out.println("ArrayDeque 栈顺序:\n"+ad);
        
        ArrayDeque<String> ad2 = new ArrayDeque<String>();
        ad2.offer("B");
        ad2.offer("A");
        ad2.offer("D");
        ad2.offer("E");
        ad2.offer("C");
        ad2.offer("E");
        System.out.println("ArrayDeque 队列顺序:\n"+ad2);
    }  
}

输出效果:

HashSet 顺序:
[D, E, A, B, C]
LinkedHashSet 顺序:
[B, A, D, E, C]
TreeSet 顺序:
[A, B, C, D, E]
ArrayList 链表顺序:
[B, A, D, E, C, E]
ArrayDeque 栈顺序:
[E, C, E, D, A, B]
ArrayDeque 队列顺序:
[B, A, D, E, C, E]


你可能感兴趣的:(java中HashSet、LinkedHashSet、TreeSet、ArrayList、ArrayDeque、LinkedList使用区别)