A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 菜鸟的求学路 中级黑马   /  2015-5-21 17:39  /  2118 人查看  /  56 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

可能大家也会知道那些事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

56 个回复

正序浏览
总结的非常好 ,面试会遇到么
回复 使用道具 举报
给力,谢谢分享
回复 使用道具 举报
不错,,,,
回复 使用道具 举报
Melo 中级黑马 2015-5-27 19:39:04
54#
给力啊 6666
回复 使用道具 举报
总结得比较全面
回复 使用道具 举报
piaoguo啦啦啦
回复 使用道具 举报
青春印记深圳 来自手机 中级黑马 2015-5-24 14:39:35
51#
给力刚学了集合
回复 使用道具 举报
不错,赞一个
回复 使用道具 举报
膜拜~膜拜~大神保佑!
回复 使用道具 举报
受教了,总结得很到位
回复 使用道具 举报

很感谢楼主给出了这么详细的解释,其实每个人不用太过纠结,只要做出选择,并持之以恒的走下去,都会有自己的明天。至于明天怎么样,都是自己的选择,走就是了。
回复 使用道具 举报

顶顶顶:victory:
回复 使用道具 举报
这个要收藏
回复 使用道具 举报
有些还是看不懂,慢慢学吧
回复 使用道具 举报
_hy 中级黑马 2015-5-24 09:07:09
43#
已阅。。。。
回复 使用道具 举报
不错 ,这个可以记一下。
回复 使用道具 举报
学习了。。。。。。。。。
回复 使用道具 举报
不错哦。加油哈
回复 使用道具 举报
谢谢楼主了,总结的不错
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马