您的位置:首页 > 编程语言 > Java开发

java基础之集合框架总结篇

2015-08-21 21:22 351 查看
(一).java集合框架轮廓(图片来自网络):下面两张图能说整个集合框架的层次和结构!





(二).Collection集合总结

    Collection
|--List 有序,可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高
|--Set 无序,唯一
|--HashSet
底层数据结构是哈希表。
如何保证元素唯一性的呢? 依赖两个方法:hashCode()和equals(),开发中自动生成这两个方法即可
|--LinkedHashSet
底层数据结构是链表和哈希表
由链表保证元素有序
由哈希表保证元素唯一
|--TreeSet
底层数据结构是红黑树。
如何保证元素排序的呢? (1). 自然排序 (2).比较器排序
          如何保证元素唯一性的呢? 根据比较的返回值是否是0来决定

(三).Set集合:

    (1)Set集合的特点
      无序,唯一
     (2)HashSet集合

       A:底层数据结构是哈希表(是一个元素为链表的数组)
       B:哈希表底层依赖两个方法:hashCode()和equals()
       执行顺序:
       首先比较哈希值是否相同
        相同:继续执行equals()方法
        返回true:元素重复了,不添加
           返回false:直接把元素添加到集合
         不同:就直接把元素添加到集合
      C:如何保证元素唯一性的呢?
        由hashCode()和equals()保证的
       D:开发的时候,代码非常的简单,自动生成即可。
       E:HashSet存储字符串并遍历
       F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)
    (3)TreeSet集合
       A:底层数据结构是红黑树(是一个自平衡的二叉树)
      B:保证元素的排序方式
         a:自然排序(元素具备比较性)
           让元素所属的类实现Comparable接口
         b:比较器排序(集合具备比较性)
          让集合构造方法接收Comparator的实现类对象

(四).Map(掌握)
    (1)将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
    (2)Map和Collection的区别?
       A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
       B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。光棍
    (3)Map接口功能概述
      A:添加功能
      B:删除功能
       C:判断功能
      D:获取功能
      E:长度功能
    (4)Map集合的遍历
      A:键找值
         a:获取所有键的集合
        b:遍历键的集合,得到每一个键
         c:根据键到集合中去找值

      B:键值对对象找键和值
        a:获取所有的键值对对象的集合
        b:遍历键值对对象的集合,获取每一个键值对对象
         c:根据键值对对象去获取键和值

  (遍历)代码体现:
       Map<String,String> hm = new HashMap<String,String>();

        hm.put("a002","hello");
         hm.put("a003","world");
         hm.put("a001","java");

       //方式1 键找值
       Set<String> set = hm.keySet();
      for(String key : set) {//增强for
       String value = hm.get(key);
      System.out.println(key+"---"+value);
       }

      //方式2 键值对对象找键和值:这个在servlet中写选购商品程序是一段模版代码
       Set<Map.Entry<String,String>> set2 = hm.entrySet();
       for(Map.Entry<String,String> me : set2) {
         String key = me.getKey();
         String value = me.getValue();
         System.out.println(key+"---"+value);
       }
    (5)HashMap集合的练习
       A:HashMap<String,String>
       B:HashMap<Integer,String>
       C:HashMap<String,Student>
       D:HashMap<Student,String>
    (6)TreeMap集合的练习
       A:TreeMap<String,String>
       B:TreeMap<Student,String>
(五).在集合中常见的数据结构:

     ArrayXxx:底层数据结构是数组,查询快,增删慢
    LinkedXxx:底层数据结构是链表,查询慢,增删快
     HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
    TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

(六).:Collections

     (1)是针对集合进行操作的工具类
    (2)问题:Collection和Collections的区别?
      (i):Collection 是单列集合的顶层接口,有两个子接口List和Set
      (ii):Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等
     (3)常见的几个小方法:
      (i): public static <T> void sort(List<T> list)
      (ii): public static <T> int binarySearch(List<?> list,T key)
      (iii): public static <T> T max(Collection<?> coll)
      (iiii):public static void reverse(List<?> list)
      (iiiii):public static void shuffle(List<?> list)
    (4)案例
       (i):ArrayList集合存储自定义对象的排序
       (ii):模拟斗地主洗牌和发牌
      (iii):模拟斗地主洗牌和发牌并对牌进行排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: