集合有序无序测试总结

集合有序无序测试总结

概述:

  1. 首先我们应该清楚这个概念:这里的有序和无序不是指集合中的排序,而是是否按照元素添加的顺序来存储对象。
  2. list是按照元素的添加顺序来存储对象的,因此是有序的。他的实现类ArrayList、LinkedList、Vector都是有序的。
  3. Map是无序的,它的存储结构是哈希表<key,value>键值对,map中插入元素是根据key计算出的哈希值来存储元素的,因此他不是按照元素的添加顺序来存储对象的,所以Map是无序的。它的实现类有:HashMap、HashTable和TreeMap。其中LinkedHashMap是有序的,hashMap用来保证存储的值键值对,list用来保证插入的顺序和存储的顺序一致。
  4. 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);
    }
}

测试结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值