java集合类浅谈

集合类的用途是"保存对象",可以划分为两个不同的概念:

1.Collection
一组元素对象,每个位置只能保存一个元素(对象),Collection是最基本的集合接口,不能被实例化使用.
     Set 无序,元素不可重复。
       List 有序,元素可重复。
     Queue 队列(先进先出)。
2.Map
一组成对的"key-value"对象。就像一个小型数据库。可以通过"key"找到对应的"value"。

Collection

1 Set
 Set继承自Collection接口,Set判断两个对象相同不是使用"=="运算符,而是根据equals方法。
 set在加入一个新元素的时候,如果这个新元素和Set中已有元素进行equals比较都返回false,则可以添加, 
 否则不行。所以,在使用Set集合的时候。要为Set集合里的元素的实现类实现一个有效的equals(Object)方 
 法。
  1.1 HashSet
      HashSet是Set接口的典型实现,HashSet使用HASH算法来存储集合中的元素,因此具有良好的存取和查找性能。当向HashSet集合中
  存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该HashCode值决定该对象在HashSet中
  的存储位置。
      HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法的返回值相等.如:
  需要把某个类的对象保存到HashSet集合中,我们就要重写这个类的equlas()方法和hashCode()方法时,应该尽量保证两个对象通
  过equals()方法比较返回true时,它们的hashCode()方法返回值也相等。
  1.2 LinkedHashSet
    LinkedHashSet集合也是根据元素的hashCode值来决定元素的存储位置,但和HashSet不同的是,它同时使用链表维护元素的次序,这
  样使得元素看起来是以插入的顺序保存的。当遍历LinkedHashSet集合里的元素时,LinkedHashSet将会按元素的添加顺序来访问集合里
  的元素。
    LinkedHashSet需要维护元素的插入顺序,因此性能略低于HashSet的性能,但在迭代访问Set里的全部元素时(遍历)将有很好的性能.
  1.3 SortedSet 
    此接口主要用于排序操作,即实现此接口的子类都属于排序的子类
  1.4 TreeSet
    TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态
  1.5 EnumSet
    EnumSet是一个专门为枚举类设计的集合类,EnumSet中所有元素都必须是指定枚举类型的枚举值。
2 List 
  2.1 ArrayList
    基于数组的线性表,ArrayList是基于数组实现的List类,多线程不安全。随机访问元素效率高于LinkedList。但是插入和删除效率低
  于LinkedList。
  2.2 LinkedList
    基于链的线性表。实现List接口和Deque接口,能根据索引来随机访问集合中的元素。也可以当作栈使用,多线程不安全。
  2.3 Vector 
    Vector和ArrayList在用法上几乎完全相同,多线程安全。
  2.4 Stack
    Stack是Vector提供的一个子类,用于模拟"栈"这种数据结构(后进先出).
3 Queue 
  Queue用于模拟"队列"这种数据结构(先进先出),不允许随机访问队列中的元素。
  3.1 Deque
    此接口是一个"双端队列",可以同时从两端添加、删除元素,因此Deque的实现类既可以当成队列使用、也可以当成栈使用。
    比如ArrayDeque。

Map

Map用于保存具有"映射关系"的数据,Map的key不允许重复。
1 HashMap
  和HashSet集合不能保证元素的顺序一样,HashMap也不能保证key-value对的顺序。
  并且类似于HashSet判断两个key是否相等的标准也是: 两个key通过equals()方法比较返回true、
  同时两个key的hashCode值也必须相等. 多线程不安全。
2 Hashtable 
 几乎可以等价于HashMap,多线程安全。 
3 SortedMap
  Map下的一个子接口,有一个TreeMap实现类.
4 TreeMap
  TreeMap就是一个红黑树数据结构,每个key-value对即作为红黑树的一个节点。
  TreeMap存储key-value对(节点)时,需要根据key对节点进行排序。
  TreeMap可以保证所有的key-value对处于有序状态。
  TreeMap有两种排序方式: 自然排序、定制排序.
5 EnumMap
  EnumMap是一个与枚举类一起使用的Map实现,EnumMap中的所有key都必须是单个枚举类的枚举值。
  创建EnumMap时必须显式或隐式指定它对应的枚举类。
  EnumMap根据key的自然顺序.(即枚举值在枚举类中的定义顺序)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值