Java集合类一概述

一、什么是集合

         存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。

集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。

集合和数组的区别

数组和集合类都是容器

数组长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象数组中存储数据类型是单一的,集合中可以存储任意类型的对象。

集合类的特点

用于存储对象,长度是可变的,可以存储不同类型的对象。

二、集合的框架

单例集合Collection体系结构:

键值对map集合体系结构:

三、常用集合及其特点

---|Collection: 单列集合

           ---|List: 有存储顺序, 可重复

              ---|ArrayList:    数组实现, 查找快, 增删慢

                                 由于是数组实现, 在增和删的时候会牵扯到数组

                                 增容, 以及拷贝元素. 所以慢。数组是可以直接

                                  按索引查找, 所以查找时较快

              ---|LinkedList:   链表实现, 增删快, 查找慢

                                 由于链表实现, 增加时只要让前一个元素记住自

                                 己就可以, 删除时让前一个元素记住后一个元

                                 素, 后一个元素记住前一个元素. 这样的增删效

                                 率较高但查询时需要一个一个的遍历, 所以效率

                                 较低

              ---|Vector:  和ArrayList原理相同, 但线程安全, 效率略低

                                 和ArrayList实现方式相同, 但考虑了线程安全问

                                 题, 所以效率略低

       ---|Set: 无存储顺序, 不可重复

              ---|HashSet 线程不安全,存取速度快。底层是以哈希表实现的。

              ---|TreeSet 红-黑树的数据结构,默认对元素进行自然排序(String)。

                                  如果在比较的时候两个对象返回值为0,那么元素重复。

              ---|LinkedHashSet 会保存插入的顺序

 ---| Map  接口    将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
      ---| HashMap       采用哈希表实现,所以无序
            ---| TreeMap   可以对健进行排序
      ---|Hashtable:
                                     底层是哈希表数据结构,线程是同步的,不可以存入null键,null值。
                                     效率较低,被HashMap 替代。
      ---|HashMap:
                                    底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。
                                    要保证键的唯一性,需要覆盖hashCode方法,和equals方法。
      ---| LinkedHashMap:
                                    该子类基于哈希表又融入了链表。可以Map集合进行增删提高效率。
      ---|TreeMap:
                                    底层是二叉树数据结构。可以对map集合中的键进行排序。需要使用Comparable或者Comparator 进行比较排序。

                                    return 0,来判断键的唯一性。

如何选用集合:

Collection

我们需要保存若干个对象的时候使用集合。

 

List

 

 

如果我们需要保留存储顺序, 并且保留重复元素, 使用List.

如果查询较多, 那么使用ArrayList

如果存取较多, 那么使用LinkedList

如果需要线程安全, 那么使用Vector

 

 

Set

 

如果我们不需要保留存储顺序, 并且需要去掉重复元素, 使用Set.

如果我们需要将元素排序, 那么使用TreeSet

如果我们不需要排序, 使用HashSet, HashSet比

TreeSet效率高.

如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值