集合框架

集合框架

一 集合概念:

对象的容器,实现了对对象的常用操作,类似数组功能。

二:和数组的区别

  • 数组定义时需要确定长度,但集合不需要。
  • 数组可以存储基本类型和引用类型,而集合只能存储引用类型(基本类型可以实现装箱进行存储)。
collection集合体系图

collection集合体系图

collection方法的使用

  Collection ct=new ArrayList();    //注意:接口不能实例化,只能调用子类的实现类
   ct,add("苹果");                   //向ct集合中添加元素。
   ct.add("香蕉");
  ct.remove("香蕉");                 //删除该元素
  ct.clear();                        //删除所有元素
//  使用增强for循环遍历集合元素     
    for(Object object:ct){     //注意点:因为该集合没有下标,不能使用for循环遍历
        system.out.printlf(object);
    }
//使用迭代器遍历集合元素
 Iterator it =ct.iterator();
while(it.hasnext()){      //hasnext()判断还有没有集合元素了
    String s=(String)it.next();    //next()将集合元素取出来
     system.out.printlf(s);
    it.remove();        //注意点:在使用iterator迭代器时循环时,不能使用collection集合remove方法删除,只能使用iterator自身的remover方法。
}
ct.contains("苹果");       //判断集合中是否含有该元素
ct.isEmpty();            //判断集合是否为空

List集合

特点:有序、有下标、元素可重复。

List实现类

  • ArrayList类:
    • 数组结构实现,查询快,增删慢。
    • 运行效率快,线程不安全。
  • Vector类:
    • 数组结构实现,查询快,增删慢。
    • 运行效率慢,线程安全。
  • LinkedList类:
    • 链表结构实现,增删快,查询慢。

泛型

其本质时参数化类型,把类型作为参数传递。

  • 好处: 1.提高代码的重用性

    ​ 2.防止类型转换异常,提高代码的安全性。

泛型集合

概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致

  • 特点:
    • 编译时即可检查,而非运行时抛出异常。
    • 访问时,不必进行类型转换。
    • 不同泛型之间引用不能相互赋值,泛型不存在多态性。

Set集合

特点:无序、无效标、集合元素不能重复。

Set实现类:HashSet: 存储结构 哈希表(数组+链表+红黑树)

  • 基于HashCode计算元素存放的位置。
  • 当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入。

TreeSet: 存储结构:红黑树

  1. 基于排列顺序实现元素不重复(红黑树)
  2. 实现了SortedSet接口,对集合元素自动排序。
  3. 元素对象的类型必须实现Comparable接口,指定排列规则
  4. 通过CompareTo方法确定是否为重复元素。

Map集合

Map集合体系图

特点:

  • 用于存储任意键值对(Key-Value)
  • 键:无序、无下标、不允许重复(唯一)
  • 值:无序、无下标、允许重复
  • 遍历集合元素通常使用keySet()和entrySet()方法实现;

HashMap实现类

  • 线程不安全,运行效率快;允许用null作为key 或者value;
  • 存储结构为哈希表(数组+链表+红黑树)
  • HashMap为什么是等链表长度为8才转红黑树
    • 因为通常情况下,链表长度很难达到8,但是特殊情况下链表长度为8,哈希表容量又很大,造成链表性能很差的时候,只能采用红黑树提高性能
  • HashMap容量扩容是为什么是2的幂数
    • 是因为容量是2的n次幂,可以使得添加的元素均匀分布在HashMap中的数组上,减少hash碰撞,避免形成链表的结构,使得查询效率降低!
  • HashMap如何解决hash碰撞
    • 定义一个负载因子,默认的为0.75,当容量超出容量得白分之75,HashMap会进行自动扩容,以解决HashMap碰撞。

Hashtable:

  • 线程安全,运行效率慢;不允许用null作为key 或者value;

Properties:

  • Hashtable的子类,要求key 和value都是String类型的。通常用于配置文件的读取。
  • 特点:
    • 1存储属性名和属性值
    • 2属性名和属性值都是字符串类型
    • 3没有泛型
    • 4和流有关

TreeMap实现类

  • 元素对象的类型必须实现Comparable接口,指定排列规则
  • 实现了SortedMap接口(Map的子接口),可以对key进行自动排序。
posted @ 2020-10-09 00:20  小胖学java  阅读(130)  评论(0编辑  收藏  举报