黑马程序员技术交流社区

标题: 面试问题----4---集合 [打印本页]

作者: 菜鸟的求学路    时间: 2015-5-21 17:39
标题: 面试问题----4---集合
可能大家也会知道那些事Java基础中的重点,不错,你才得没错,重点的部分也是面试中的重点:
下面的就是集合框架的知识点
一.集合的作用:
        1.我们之前存储大量数据,可以使用数组:
          数组的弊端:
                1).要先期指定长度;
                2).一旦指定长度,其长度不能改变;
        2.Java为我们提供了大量的"集合类",供我们程序员使用;
        3.这些"集合类"内部使用了不同的"数据结构"来存储对象;
                它们有些:查询快;增删慢;
                    有些:查询慢;增删快;
                    有些:查询快;增删快;但是无序的;
          要根据我们的需要选择不同的集合类;
二.集合框架的层次结构:
        Collection(顶层接口):
                |--List(接口):
                        |--ArrayList(类):数组实现;线程不安全的,效率高;
                        |--Vector(类):数组实现;线程安全的,效率低;
                        |--LinkedList(类):链表实现;线程不安全的,效率高;
                |--Set(接口):
                        |--HashSet(类):哈希表;无序的;线程不安全的,效率高;
                        |--TreeSet(类): 红黑树;排序的;线程不安全的,效率高;
                                        比较的两种方式:
                                                1.存储的对象要实现:Comparable接口,重写compareTo()方法;
                                                2.使用"比较器"实例化TreeSet:Comparator接口,重写compare()方法;
                        |--LinkedHashSet(类):链表,哈希表;由链表保证有序,由哈希保证唯一。线程不安全的,效率高;
        Map(顶层接口):
                |--HashMap(类);哈希表实现的图:无序的。线程不安全的,效率高;
                |--LinkedHashMap(类):链表哈希表实现;有序的。线程不安全的。
                |--TreeMap(类):红黑树实现;排序的(基于自然排序或比较器)。线程不安全的。
                |--Hashtable(类):哈希表实现;无序的。线程安全的,效率低;
三.数据结构:
        1.数组:随机获取元素快;增、删慢;
        2.链表:查找慢;增、删快;
        3.哈希表:结合了数组和链表的优点,查找、增、删都很快;
        4.树:对元素排序的。
四.各种集合的遍历方式:
        使用多态时:
        Collection:
                |--toArray():获取一个Object数组,然后再遍历数组;
                |--iterator()迭代器:Iterator it = col.iterator();
                                     while(it.hasNext()){
                                        Object obj = it.next();
                                     }
                |--增强for
        List:
           |--Collection的所有方式;
           |--结合Collection的size()和List的get()方法,使用for()循环;
        Set:
           |--Collection的所有方式;
        Map:
           |--获取所有键的集合keySet(),之后再遍历Set(使用Collection的方式)
           |--获取所有"键值对"对象entrySet(),之后遍历Set(使用Collection的方式)
五.怎么选择哪种集合:
        根据需要:
        是否需要"键值对"的形式:
                是:Map
                        是否需要"有序":
                                是:LinkeHashMap
                                否:HashMap
                        如果需要"排序":
                                是:TreeMap
                否:Collection:
                      是否"有序","允许重复":
                                是:List
                                        对元素内容,经常的查询,但很少的增、删:选择数组;
                                        对元素内容,经常的增删,很少获取元素:选择链表;
                                否:Set
                                        是否需要排序:
                                                是:TreeSet
                                                否:HashSet
对于三种集合,常用:ArrayList,HashSet,HashMap
作者: 小王泽哥    时间: 2015-5-21 18:10
总结的不错  面试会遇到么
作者: xcj199106    时间: 2015-5-21 21:19
楼主给力,感谢
作者: 张海旭    时间: 2015-5-21 23:19
:victory:顶顶顶
作者: 白水丶    时间: 2015-5-21 23:30
学习了。。。
作者: xuelanghu120    时间: 2015-5-22 00:08
总结的不错
作者: 宥美    时间: 2015-5-22 08:51
学习了 楼主真棒
作者: guojiadui    时间: 2015-5-22 08:57
这是视频上的笔记吧
作者: hellotaomi    时间: 2015-5-22 11:00
楼主很棒,总结的比较全面
作者: cunbai    时间: 2015-5-22 11:18
谢谢楼主总结,学习到了!
作者: 嘉Ming    时间: 2015-5-22 11:31
学习了,谢谢分享
作者: hydrogen11    时间: 2015-5-22 11:49
谢谢楼主分享!学习了!
作者: 灯火通明    时间: 2015-5-22 11:59
感谢楼主经验

作者: 348532020    时间: 2015-5-22 12:22
收藏了,感谢
作者: ddddk    时间: 2015-5-22 12:45
总结不错 不过也要结合实际操作来加深认识
作者: tougboy    时间: 2015-5-22 13:13
谢谢  复习知识点挺合适
作者: hkbat    时间: 2015-5-22 14:47
来看看!!
作者: yokii83    时间: 2015-5-22 15:31
这个写的可以。
作者: 王建伟    时间: 2015-5-22 18:06
牛啊,学习了
作者: 开到荼靡    时间: 2015-5-22 18:08
不错哦,这总结
作者: q617939894    时间: 2015-5-22 22:00
LZ总结的不错!学习了!
作者: 黄冬    时间: 2015-5-22 22:16
总结的不错
作者: sss18310878521    时间: 2015-5-22 22:22
呵呵,真牛逼啊,
作者: 王连涛    时间: 2015-5-22 22:27
总结的很到位, 刚刚学完今晚考试了,才考了84很伤心,试题满满全是坑啊
作者: 破烂小白    时间: 2015-5-22 22:30

学习了。。。
作者: 张清华    时间: 2015-5-22 22:54
学习了,thanks!!
作者: 快乐Anne    时间: 2015-5-22 22:54
学习了,谢楼主
作者: 追忆似水年华    时间: 2015-5-22 22:56
不错,学习了。
作者: 鸣人H    时间: 2015-5-22 22:59
给力的楼主
作者: Lucus    时间: 2015-5-22 23:09
感谢楼主的总结,总结的很多到位!!!
作者: wx_yTUQXu69    时间: 2015-5-23 01:11
谢谢分享
作者: 疯狂的大猫    时间: 2015-5-23 09:22
虽然还没有学到,算是预习一遍了吧
作者: 791180016    时间: 2015-5-23 10:15
不错不错,lz多写点吧
作者: 景彬    时间: 2015-5-23 16:35
多谢楼主分享,总结的很全面。
作者: zhou330667146    时间: 2015-5-23 21:48
顶顶顶顶顶顶
作者: Sky丶    时间: 2015-5-24 00:57
都说不错  估计不错 还没学到呢
作者: 怪学究    时间: 2015-5-24 01:14
今天正好面试用
作者: LoveMyself    时间: 2015-5-24 01:28
感觉集合真难缠
作者: jiatengde    时间: 2015-5-24 01:32
谢谢楼主了,总结的不错
作者: 時間_|_的灰    时间: 2015-5-24 04:00
不错哦。加油哈
作者: 王建伟    时间: 2015-5-24 08:09
学习了。。。。。。。。。
作者: 冷雨敲窗被未温    时间: 2015-5-24 08:51
不错 ,这个可以记一下。
作者: _hy    时间: 2015-5-24 09:07
已阅。。。。
作者: 幸福与我零距离    时间: 2015-5-24 09:20
有些还是看不懂,慢慢学吧
作者: 二大爷    时间: 2015-5-24 09:22
这个要收藏
作者: yang2015    时间: 2015-5-24 13:47

顶顶顶:victory:
作者: Animal    时间: 2015-5-24 13:59

很感谢楼主给出了这么详细的解释,其实每个人不用太过纠结,只要做出选择,并持之以恒的走下去,都会有自己的明天。至于明天怎么样,都是自己的选择,走就是了。
作者: lhwinner    时间: 2015-5-24 14:10
受教了,总结得很到位
作者: !85684009ex    时间: 2015-5-24 14:21
膜拜~膜拜~大神保佑!
作者: 流水0215    时间: 2015-5-24 14:31
不错,赞一个
作者: 青春印记深圳    时间: 2015-5-24 14:39
给力刚学了集合
作者: 彭越    时间: 2015-5-24 14:50
piaoguo啦啦啦
作者: 時間_|_的灰    时间: 2015-5-27 19:23
总结得比较全面
作者: Melo    时间: 2015-5-27 19:39
给力啊 6666
作者: zuoyou    时间: 2015-5-27 19:50
不错,,,,
作者: l598790586    时间: 2015-5-27 20:20
给力,谢谢分享
作者: YRDHelloworld    时间: 2015-5-27 20:34
总结的非常好 ,面试会遇到么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2