java 集合框架



可能大家也会知道那些事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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值