集合有序无序测试总结
概述:
- 首先我们应该清楚这个概念:这里的有序和无序不是指集合中的排序,而是是否按照元素添加的顺序来存储对象。
- list是按照元素的添加顺序来存储对象的,因此是有序的。他的实现类ArrayList、LinkedList、Vector都是有序的。
- Map是无序的,它的存储结构是哈希表<key,value>键值对,map中插入元素是根据key计算出的哈希值来存储元素的,因此他不是按照元素的添加顺序来存储对象的,所以Map是无序的。它的实现类有:HashMap、HashTable和TreeMap。其中LinkedHashMap是有序的,hashMap用来保证存储的值键值对,list用来保证插入的顺序和存储的顺序一致。
- Set是无序的,并且set中的元素不能重复。set的底层实现其实是Map,它是计算key的哈希值来确定元素在数组中的存放位置,所以是无序的,因为在Map中key的值不能重复,所以set中的元素不能重复。它的实现类有:HashSet,LinkedHashSet,TreeSet。其中LinkedHashSet是有序的,其中hashSet用来保证数据唯一,List用来保证插入的顺序和存储的顺序一致。
测试代码:
import java.util.*;
/**
* @Description: 集合有序无序测试(注:按照添加顺序与输出顺序是否一致定义有序无序)
* @author: 王赛
* @date 2019/9/14 10:26
*/
public class ColectionTest {
public static void main(String[] args) {
/**
* List接口和Set接口的顶级接口是Collection接口
* List接口的实现类有ArrayList,LinkedList,Vector都是有序可重复的,后两者一样的测试略
* Set接口的实现类有HashSet,LinkedHashSet,TreeSet
*/
List list = new ArrayList();
List linkedList = new LinkedList();
List vector = new Vector();
Set hashSet = new HashSet<String>();
Set treeSet = new TreeSet();
Set linkedHashSet = new LinkedHashSet();
/**
* Map的实现类顶级接口为Map
* Map的实现类有:HashMap,LinkedHashMap,TreeMap
*/
Map<Integer,String> hashMap = new HashMap<Integer, String>();
//测试略
Map<Integer,String> linkedHashMap = new LinkedHashMap<Integer, String>();
Map<Integer,String> treeMap = new TreeMap<Integer, String>();
Map<Integer,String> hashTable = new Hashtable<Integer, String>();
/**
* 添加list集合元素,有序可重复
*/
list.add("w");
list.add("a");
list.add("n");
list.add("g");
list.add("a");
System.out.println("list集合:"+list);
/**
* 添加hashSet集合元素,无序不可重复
*/
hashSet.add("w");
hashSet.add("a");
hashSet.add("n");
hashSet.add("g");
hashSet.add("a");
System.out.println("hashSet集合:"+hashSet);
/**
* 添加treeSet集合元素,无序不可重复
*/
treeSet.add("w");
treeSet.add("a");
treeSet.add("n");
treeSet.add("g");
treeSet.add("a");
System.out.println("treeSet集合:"+treeSet);
/**
* 添加LinkedHash集合元素,有序不可重复
*/
linkedHashSet.add("w");
linkedHashSet.add("a");
linkedHashSet.add("n");
linkedHashSet.add("g");
linkedHashSet.add("a");
System.out.println("linkedHashSet集合:"+linkedHashSet);
/**
* 添加hashMap集合元素
*/
hashMap.put(1,"w");
hashMap.put(2,"a");
hashMap.put(3,"n");
hashMap.put(4,"g");
hashMap.put(5,"a");
System.out.println("hashMap集合:"+hashMap);
}
}
测试结果: