java 集合类学习总结

前几天去面试,竟然在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的要高。

        

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值