集合类(Collection和Map接口)简介

Posted janson071

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合类(Collection和Map接口)简介相关的知识,希望对你有一定的参考价值。

集合分为Collection和Map,详细分类如下图所示:

技术分享图片

 

 

 

技术分享图片

 

 

以下是测试验证代码:

        //HashSet,无序(存取不一致)、去重
        Set set_H = new HashSet();
        set_H.add(8);
        set_H.add(3);
        set_H.add("Hello");
        set_H.add(5);
        set_H.add(5);
        System.out.println(set_H);

输出结果:[3, Hello, 5, 8]

 

        //LinkedHashSet能保证怎么存就怎么取的集合对象 ,有序(存取一致)、去重
        Set set_L = new LinkedHashSet();
        set_L.add(8);
        set_L.add(3);
        set_L.add("Hello");
        set_L.add(5);
        set_L.add(5);
        System.out.println(set_L);

输出结果:[8, 3, Hello, 5]

 

        //TreeSet 能够对集合中对象进行排序,无序(存取不一致)、去重
        //排序规则:根据ASCII表大小升序排序
        //只能对存储同一种类型的数据才能排序
        Set set_T = new TreeSet();
        set_T.add("wo");
        set_T.add("ai");
        set_T.add("study");
        set_T.add("java");
        set_T.add("java");
        System.out.println(set_T);

输出结果:[ai, java, study, wo]

 

        //ArrayList,有序(存取一致)、不去重
        //查询快,增删慢
        List list_A = new ArrayList();
        list_A.add(8);
        list_A.add(3);
        list_A.add(1);
        list_A.add("hello");
        list_A.add("world");
        list_A.add("world");
        System.out.println(list_A);

输出结果:[8, 3, 1, hello, world, world]

 

        //LinkedList,有序(存取一致)、不去重
        //查询慢,增删快
        List list_L = new ArrayList();
        list_L.add(8);
        list_L.add(3);
        list_L.add(1);
        list_L.add("hello");
        list_L.add("world");
        list_L.add("world");
        System.out.println(list_A);

输出结果:[8, 3, 1, hello, world, world]

 

        //HashMap,键无序(存取不一致)、在Map 中插入、删除和定位元素,HashMap 是最好的选择
        Map map_H = new HashMap();
        map_H.put(452,"张三");
        map_H.put(285,"李四");
        map_H.put(689,"王五");
        map_H.put(968,"赵六");
        System.out.println(map_H);

输出结果:{689=王五, 452=张三, 968=赵六, 285=李四}

 

        //LinkedHashMap,键保存了插入的顺序,怎么存就怎么取
        Map map_L = new LinkedHashMap();
        map_L.put(452,"张三");
        map_L.put(285,"李四");
        map_L.put(689,"王五");
        map_L.put(968,"赵六");
        System.out.println(map_L);

输出结果:{452=张三, 285=李四, 689=王五, 968=赵六}

 

        //TreeMap,按键的升序排序
        Map map_T = new TreeMap();
        map_T.put(452,"张三");
        map_T.put(285,"李四");
        map_T.put(689,"王五");
        map_T.put(968,"赵六");
        System.out.println(map_T);

输出结果:{285=李四, 452=张三, 689=王五, 968=赵六}

 

总结:

基于array的集合适合查询,而基于linked(链表)的集合则适合添加和删除操作,基于哈希的集合介入二者之间。

* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();Vector总是比ArrayList慢,所以要尽量避免使用。

* 在各种Sets中,HashSet通常优于TreeSet(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。TreeSet存在的唯一理由:能够维护其内元素的排序状态。

* 在各种Maps中HashMap用于快速查找。

* 当元素个数固定,用Array,因为Array效率是最高的。

结论:最常用的是ArrayList,HashSet,HashMap,Array。而且,我们也会发现一个规律,用TreeXXX都是排序的。

















以上是关于集合类(Collection和Map接口)简介的主要内容,如果未能解决你的问题,请参考以下文章

Java--Collection和Map集合

Java集合类根接口:Collection 和 Map

Java集合框架中接口Collection和Map的区别

集合类 collection接口 ArrayList

集合类简介

集合类Set\Map