Java集合框架课程安排 1.集合框架API知识 List/Set/Map集合 2.常见数据结构 数组/链表/队列/树 3.集合源码解读 List/Set/Map 1.为什么需要学习Java中集合框架呢? 集合概念:存放多个元素内容 框架:底层封装好 提供简单的api,给开发人员使用 Java框架 Spring SpringMVC等 集合框架 JDK帮助我们封装好的 ArrayList/Map/Set 原生的数组,存放数据在最开始定义死了容量 在以后,如果继续存放数据就有可能导致容量无法装下,从而程序就会报错。 集合特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。【官方】 解读:最开始定义了一个数组,装10个元素;在想要存放第11个元素时,自动实现对我们定义好的数组进行扩容. 常见集合框架底层设计了大量的数据结构,分别是: 1.数组 2.链表 3.树 4.队列 集合框架中单列与多列的区别? 单列----一行就只有一列数据 多列----一行有两列数据 key(第一列) value(第二列) 集合框架的组成部分: 1.Collection(存放单列数据) --- 接口 ##List接口:存放数据可以允许重复的 ###ArrayList 底层基于数组实现 ###LinkedList 底层基于链表数据结构实现 ##Set接口:不允许存入重复数据 Set集合对数据做去重。 HashSet 不允许存入重复数据 底层基于Map集合实现 2.Map(存入多列数据 key value)--- 接口 ###HashMap 底层 基于数组+链表实现(JDK1.7) (JDK1.8)基于数组+链表+红黑树实现。 ###HashTable
ArrayList集合的常见方法 方法名 说明 public boolean add(E e) 将元素插入到指定位置的arrylist中 public E remove(int index) 删除arraylist里的单个元素 public E set(int index,E element) 替换arraylist中指定索引的元素 public E get(int index) 通过索引值获取arraylist中的元素 public int size() 返回arraylist中元素的数量 ArrayList集合 1.ArrayList类是一个可以动态修改的数组,与普通数组的区别就是它没有固定大小的限制。 2.ArrayList继承了AbstractList,并实现了List接口。 3.ArrayList类位于java.util包中,使用前需要引入它,语法格式如下: import java.util.ArrayList;//引入ArrayList类 ArrayList<E> objectName = new ArrayList<>();//初始化 E:泛型数据类型,用于设置objectName的数据类型,只能为引用数据类型。 ArrayList中的元素实际上是对象,在以上实例中,数组列表元素都是字符串String类型;如果我们要存储其他类型,而<E>只能为引用类型,这时就需要使用到基本类型的包装类 objectName:对象名 Collection集合的遍历: 概述:Iterator:迭代器,集合的专用遍历方式 1.Iterator<E> Iterator() 返回在此collection的元素上进行迭代的迭代器。 2.boolean hashNext() 如果仍有元素可以迭代,则返回true 3.E next()返回迭代的下一个元素。 ---------------------------------------------------------------------------------------------------- List集合特有方法 方法名称 说明 boolean add(int index,E e) 在此集合中的指定位置插入指定的元素 E remove(int index) 删除指定的索引处的元素,返回被删除的元素 E set(int index,E element) 修改指定索引处的元素,返回被修改元素 E get(int index) 返回指定索引处的元素 总结: Collection接口只是提供了集合的基本方法,具体的实现List ArrayList需要实现List接口 List集合下都是有序的接口。根据存放的顺序进行遍历;可以允许存放重复数据,Set接口不允许。 List结课: List集合概述: 1.有序集合,用可以精确的控制列表中每个元素的插入位置。可以通过整数索引访问元素,并搜索列表中的元素。 2.与Set集合不同,List集合通常允许重复的元素。 3.List集合的特点: 3.1有序:存储和取出的元素顺序一致 3.2可重复:存储的元素可以重复 ------------------------------------------------------------------------------------------------------------------------- ListIterator 1.列表迭代器: ListIterator listIterator():List集合特有的迭代器 该迭代器继承了Iterator迭代器,所以,就可以直接使用hasNext()和next()方法。 2.特有功能: Object previous():获取上一个元素 boolean hasPrevious():判断有没有上一个元素 3.注意:ListIterator可以逆向遍历List,但是前提是先正向遍历,然后才能够逆向遍历。一般情况下,不使用。 ------------------------------------------------------------------------------------------------------------------------ 增强for循环的使用 增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以 在遍历的过程中,不能对集合中的元素进行增删操作! 增强for循环 基本语法 for(元素类型 元素名(自己取的变量名称):集合名或者是数组名称){ 访问元素 } 总结:今后集合就可以使用三种不同类型的方式来遍历 1.传统for循环 2.迭代器Iterator后者是List接口专用的ListIterator(正向,逆向) 3.增强for循环【JDK1.5推出,底层基于我们的Iterator迭代器】 ------------------------------------------------------------------------------------------------------------------------ 泛型的概述