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]