当前位置: 首页 > >

集合面题总结

发布时间:

大纲:


?先说说大纲的构成部分:


? ? ? ?Iterable接口:


? ? ? ? ? ? ?优点:实现Iterable接口的类可以拥有增强for循环(foreach循环)


? ? ? ? ? ? ?方法:hashNext()? ? ? ?是否存在下一项


? ? ? ? ? ? ? ? ? ? ? ? next()? ? ? ? ? ? ? ? 获取下一项


? ? ? ? ? ? ? ? ? ? ? ? ?remove()? ? ? ? ? 该方法可以删除由next()最新返回的值(注意,此后不能调用remove,直到next再一次调用后以后)


? ? ? ?Collection接口:


? ? ? ? ? ? ? ? ?继承: Iterable接口


? ? ? ? ? ? ? ? ?方法:size()? ? ? ? ? ? ? ? ? ? ? 返回集合中的项数


? ? ? ? ? ? ? ? ? ? ? ? ? ? isEmpty()? ? ? ? ? ? ? ?判断集合中是否为空


? ? ? ? ? ? ? ? ? ? ? ? ? ? contains(Object)? ? ? ? ?判断集合中是否包含某项


? ? ? ? ? ? ? ? ? ? ? ? ? ? ?clear()? ? ? ? ? ? ? ? ? ? 清楚所有项


? ? ? ? ? ? ? ? ? ? ? ? ? ? ?add(E)? ? ? ? ? ? ? ? ? ? 集合中添加某项


? ? ? ? ? ? ? ? ? ? ? ? ? ? ?remove(Object)? ? ? ?从集合中删除某项


? ? ? ? ? ? ? ? ? ? ? ? ? ? ?iterator()? ? ? ? ? ? ? ? ? 迭代器,遍历集合??


? ? ? ? ? ? ? ? ? 子类:


? ? ? ? ? ? ? ? ? ? ? ? ? List接口:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:可以添加重复的元素


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有顺序(注意,顺序跟排序搞清楚定义)


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?子类:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ArrayList:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?优点:get和set调用花费常熟时间(查询快)


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?缺点:心项对的插入和现有项的删除代价昂贵,除非是在末端进行


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LinkedList:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 优点:新项的插入和先有项的删除开销很小


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 缺点:对get和set调用昂贵


? ? ? ? ? ? ? ? ? ? ? ?


? ? ? ? ? ? ? ? ? ? ? ? ? ?Set接口:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 特点:不保存重复的元素


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有顺序


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?子类:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HashSet:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?速度最快,没有明显的顺序保存元素


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?混合元素可以是null,但只能放入一个null


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TreeSet:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 按照比较结构的升序保存对象(排序)


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LinkedHashSet:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按照被添加的顺序保存对象(排序)


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Queue:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?特点:先进先出


? ? ? ? ? ? Map接口:


? ? ? ? ? ? ? ? ? ? ? ?特点:以键值对存储


? ? ? ? ? ? ? ? ? ? ? ? 子类:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HashMap:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 提供了最快的访问技术,没有按照明显的顺序保存对象


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TreeMap:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按照比较结果的升序保存键


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LinkedHashMap:


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?按照插入顺序保存键,同时还保留了HashMap的查询速度


面试题:

1.ArrayList和LinkList的区别


? ? ? ? ? ? ArrayList:以数组方式存储对象,对象查询快


? ? ? ? ? ? LinkList:以双向链表形式存储对象,插入速度快


?


2.Collection接口的remove()方法和Iterator接口的remove()方法区别


? ? ? ? ? ? 性能方面:


? ? ? ? ? ? ? ? ? ? ? Collection的remove方法需要先按照下标查到到该对象,查询消耗时间,然后再执行删除


? ? ? ? ? ? ? ? ? ? ? ?Iterator的remove方法结合next()方法使用,效率更高


? ? ? ? ? ? ?容错方法:


? ? ? ? ? ? ? ? ? ? ? ? Collection的remove方法里面可以放集合下标或者对象,需要参数才行,但是当你集合里面的对象少了,下标就需要从新排。这个时候可能会报错,报ConcurrentModificationException


? ? ? ? ? ? ? ? ? ? ? ? ??Iterator的remove方法不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致


?


3.Array和ArrayList有什么区别


? ? ? ? ? ? ? ? Array:数组,定义时,必须声明数据类型和数组的大小


? ? ? ? ? ? ? ? ArrayList:动态数组(集合),是数组的复杂版本,可以储存不同数据类型,长度可变


?


4.怎么将一个数组转成List,怎么将一个List转换成数组


? ? ? ? ? ? ? ? 转List:Arrays.asList(数组名)


? ? ? ? ? ? ? ? 转数组:集合名.toArray();


?


5.HashSet,TreeSet,LinkedHashSet区别


? ? ? ? ? ? ? ? HashSet:操作速度快


? ? ? ? ? ? ? ? TreeSet:集合有排序功能


? ? ? ? ? ? ? ? ?LinkedHashSet:按照插入的顺序存储集合


?


6.HashMap,TreeMap,LinkedHashMap区别


? ? ? ? ? ? ? ? ? ?HashMap:操作速度快,但线程不安全


? ? ? ? ? ? ? ? ? ?TreeMap:集合有排序功能


? ? ? ? ? ? ? ? ? ? LinkedHashMap:按照插入的顺序存储集合


?


7.HashMap和HashSet的区别


? ? ? ? ? ? ? ? ? ? HashMap比HashSet快


? ? ? ? ? ? ? ? ? ? HashSet以键值对形式存储,HashSet以对象存储


? ? ? ? ? ? ? ? ? ? HashMap调用put()方法添加对象,而HashSet调用add()方法添加对象


? ? ? ? ? ? ??


8.List,Set,Map之间的区别


? ? ? ? ? ? ? ? ? ?List:可以允许重复对象,可以插入多个null,有序


? ? ? ? ? ? ? ? ? ?Set:不允许重复对象,只能插入一个null,无序


? ? ? ? ? ? ? ? ? ?Map:键必须唯一,但值可以重复。键只允许一个为null,值可以多个为null


?



友情链接: