黑马程序员D10集合框架总结

------- android培训java培训、期待与您交流! ----------

一、集合体系:

1.Collection(单列)

      1.1 List(有序,可重复)
            ArrayList: 底层数据结构是数组,查询快,增删慢。线程不同步,效率高。
            LinkedList:底层数据结构师链表,查询慢,增删快。线程不同步,效率高。
            Vector:底层数据结构师数组,查询快,增删慢。线程同步,效率低。

      1.2 Set(无序,唯一)
             HashSet:底层数据结构是哈希表。线程不同步,效率高。怎么保证唯一性的呢? 它依赖两个方法:                                              hashCode()和equals()顺序:首先判断hashCode()值是否相同。
                               同:继续走equals(),看返回值如果true就不添加集合。如果false:就添加到集合。
             TreeSet:底层数据结构是二叉树。线程不同步,效率高。怎么保证唯一性的呢?是根据返回是否是0

                              怎么保证排序的呢?
                               一、自然排序(元素具备比较性)实现Comparable接口
                               二、比较器排序(集合具备比较性)实现Comparator接口
2.Map(双列 底层结构是针对键有效,跟值无关)
           HashMap:底层数据结构师哈希表,线程不同步,效率高。
 
           怎么保证唯一性呢?
          它依赖两个方法:hashCode()和equals()顺序:首先判断hashCode()值是否相同。同:继续走equals(),
                   看返回值如果为true:就补添加集合。如果false:就添加到集合。不同:就添加到集合。
            TreeMap:底层数据结构师二叉树。线程不同步,效率高。
              
            怎么保证唯一性的呢?是根据返回是否是0
            怎么保证排序呢?两种方式自然排序(元素具备比较性)实现Comparable接口比较器排序(集合)

二、集合常见应用功能

     (添加功能,判断功能,删除功能,获取功能,长度功能)

     1.Collection<E>接口:
           add(E e);rermove(Object o);contains(Object o);iterator();size()
     2.List<E>接口:
            add(E e);get(int index);add(int index,E element);remove(int index);set(int index,E element)
            添加时如果集合有相同元素,则存数失败
     3.Map<K,V>接口
            put(K key,V value);remove(Object key);containsKey(Object key);containsValue(Object value);
            size();get(Object key);keySet();values();
     
三、遍历方式

        1.ListSet迭代器:
             Iterator;
             ListIterator;
        2.Map迭代器:
              有两种选择一种去用即可。
                   (妻子找丈夫)键和值
                    (结婚证找妻子和章法)键和值映射关系
        3.Map的两种典型遍历方式:
                entrySet()与keySet()。entrySet的遍历方式要比keySet()高许多,因为欲取得同样的key-value对,keySet()
                相当于遍历了两次Map。

四、集合那么多什么时候该用谁?
        是否键值 正确?

           是 :Map
               是否对见排序?
                   是:TreeMap
                   否:HashMap
                    不懂的情况下,使用HashMap
            否:collection


是否唯一?

是:Set

是否对元素进行排序?

是:TreeSet

是否需要有序?

是:LinkedSet

否:HashSet

不懂的情况下,使用HashSet

否:List

是否要安全?

是:Vector(真正开发中也不用)

否:ArrayListLinkedList

注意:查询多:ArrayList

增删多:LinkedList

不懂的情况下,使用ArrayList








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值