java集合类的特点

今天第一次去参加公司的招聘会,在面试中问到了有集合的特点,但是当时只答出来了一部分,不过还好,面试官对我的答案还挺满意的,顺利的通过了面试!得到了来之不易的实习机会!

面试回学校后,通过翻阅书籍和查询网络资源,对集合类的特点做了,如下总结!

集合类的祖先接口分别是collection和map; 而collection中,已知所实现的类分别有:AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector

而collection接口中有两个常用的子接口分别是list<E>和set<E>.在list<E>接口下又有如下实现的集合类:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector,像常用的ArrayList和LinkedList Vector都包含在其中.而set<E>接口下又实现了如下类:AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet,像常用的HashSet和TreeSet;而这两个不同接口下所实现的类,不同点主要是list下的集合类,可以顾念重复元素,元素是有序的(存取顺序一致),可以通过List脚标来获取指定元素;而Set不可以有重复元素,元素是无序的。List接口中,比较常用的类有三个:ArrayList、Vactor、LinkedList。

ArrayList :线程不安全的,对元素的查询速度快。

Vector :线程安全的,多了一种取出元素的方式:枚举(Enumeration),但已被ArrayList取代。

LinkedList :链表结构,对元素的增删速度很快。

Set接口中,比较常用的类有两个:HashSet、TreeSet:

HashSet:要保证元素唯一性,需要覆盖掉Object中的equals和hashCode方法(因为底层是通过这两个方法来判断两个元素是否是同一个)。

 

TreeSet:以二叉树的结构对元素进行存储,可以对元素进行排序。

      排序的两种方式:

             1、元素自身具备比较功能,元素实现Comparable接口,覆盖compareTo方法。

             2、建立一个比较器对象,该对象实现Comparator接口,覆盖compare方法,并将该对象作为参数传给TreeSet的构造函数(可以用匿名内部类)。

 

Map接口其特点是:元素是成对出现的,以键和值的形式体现出来,键要保证唯一性:常用类有:HashMap,Hashtable ,TreeMap。

HashMap:线程不安全等的,允许存放null键null值。

Hashtable:线程安全的,不允许存放null键null值。

TreeMap:可以对键进行排序(要实现排序方法同TreeSet)。

Collection和Map两个接口对元素操作的区别:

存入元素:

Collection接口下的实现类通过add方法来完成,而Map下是通过put方法来完成。

取出元素:

Collection接口下:List接口有两种方式:1、get(脚标);2、通过Iterator迭代方式获取元素;而Vactor多了一种枚举(Enumeration)的方式。Set接口通过迭代的方式获取元素。

Map接口下:先通地keySet获取键的系列,然后通过该系列使用Iterator迭代方式获取元素值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值