您的位置:首页 > 编程语言 > Java开发

java 集合类学习总结

2012-06-14 10:28 218 查看
前几天去面试,竟然在java集合类的问题上卡壳了,这里重新学习一下。

1、首先强调接口不能被实例化,所以定义List <Object> list = new ArrayList<Object>();但可以定义一个接口的引用指向它的实现类。

2、集合类主要是保存数据、临时存放数据的载体,所以也称之为容器类。

3、java的集合类主要有两个接口派生:Cellection和Map,是集合框架的根接口。由Collection派生出来的接口有Set、List和Queue;由Map派生的HashMap和SortedMap,所以也称java的集合类主要分为四大体系,List、Set、Queue和Map。List是一个有序的、可重复的集合,Set是无序的、不可重复的集合,Map是具有代表有映射关系的集合,Queue代表队列集合。

4、四大接口以及实现类的介绍

一、Set接口 无序的、不允许包含相同的元素的集合,两个set判断两个对象是否相同是根据equals方法,如果两个对象用equals判断返回的是true,那么set不会接受这两个对象。HashSet是对Set的典型实现,hashset按hash算法来存储集合中的元素,因此具有很好的存储和查找性能,HashSet判断两个元素是否想等是根据equals方法比较相等,同时两个元素的HashCode()方法的返回值也相等,HashSet可以保存null元素。

二、List集合是有序的集合 集合中的每个元素都有其对应的顺序索引,ArrayList和Vector是对List的典型的实现,主要区别是Vector是线程安全的,ArrayList不是,List还有一个基于链表实现的LInkedList类,LinkedList插入、删除元素非常快,linkedlist的功能特别多,既实现了list接口又实现了Queue接口(双向队列),既可以当做双向队列适使用,也可以当做栈使用。

三、Queue 用于模拟队列的数据结构 LinkedList和ArrayQueue是其两个比较常用的实现。

四、Map用于具有映射关系的数据 Map有几个常用的实现类 HashMap、HashTable和TreeMap。HashTable是线程安全的,因此性能差,HashMap可以用null作为key或者value

五、集合类还提供了一个工具类Collections,主要用于查找、替换、同步控制、设置不可变集合类

六、Set、List、Map 三者之间的关系

Map集合的所有Key集中起来就组成一个Set集合,所以Map提供了Set<K>和KeySet()方法返回所有的Key组成Set集合,可见Map中的key具有Set集合的特征,这就实现了Map到Set的转换。HashSet和HasMap分别是他们的实现类具有相似的特性。

Map集合是一个关联数组,Map的key组成一个Set集合,而value组成一个List集合,但要注意的是Map德values方法返回的并不是一个List集合,而是一个不存储元素的Collection集合,可以把List看成一个有虚拟的Int类型索引的Map集合。List相当于key都是int类型的Map集合

七、ArrayList和LinedList的区别 ArrayList是一个顺序存储的线性表,底层是数组实现的,而LinkedList是一个链式存储的线性表,其本质是一个双向链表。对于一个随机存储比较频繁的元素操作应该用ArrayList,对于一个插入和删除比较频繁的元素操作应该用LinkedList,Arraylist的总体性能比LinkedList的要高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: