1.集合体系结构:
- 集合类的特点:提供一种空间可变的存储模型,存储的数据容量可以随时发生改变。
- 集合类的体系关系图:
Collection集合概述和基本使用:
- Collection集合概述:
- 是单列集合的顶层接口,他表示一组对象,这些对象也称为Collection的元素
- JDK不提供此接口的任何实现,它提供更具体的子接口(如Set和List)实现
- Collection 集合的基本使用:
public class Collection{ public static void main(String[] args){ //创建Collection 集合对象 Collection<String> c = new ArrayList<String>(); //添加元素:boolean add(E e) c.add("hello"); c.add("world"); c.add("java"); //输出集合对象 System.out.println(c); } }
- Collection 集合的常用方法:
- boolean add(E e) //添加元素
- boolean remove(Object o) //从集合中移除指定的元素
- void clear() //清空集合中的元素
- boolean contains( Object o) //判断集合中是否存在指定的元素
- boolean isEmpty() //判断集合是否为空
- int Size() //集合的长度,也就是集合中元素的个数
- Collection集合的遍历:
- 迭代器的介绍:
- 迭代器,集合的专用遍历方式
Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到。
迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的。
- Collection 集合的遍历:
- 第一种遍历方式:for 遍历集合
public class Test1 { public static void main(String[] args) { List list = new ArrayList(); list.add("zs"); list.add("lis"); list.add("王五"); list.add("zs"); list.add("王五"); list.add("zs"); System.out.println("list = " + list); for (int i = 0; i < list.size(); i++) { System.out.println("第 " + (i + 1) + "个数据 = " + list.get(i)); } } }
- 第二种遍历方式:iterator 集合
public class Test2 { public static void main(String[] args) { List list = new ArrayList(); list.add("zs"); list.add("lis"); list.add("王五"); list.add("zs"); list.add("武大郎"); list.add("zs"); System.out.println("原始 数据 list = " + list); Iterator iterator = list.iterator(); while (iterator.hasNext()){ String str = (String) iterator.next(); if (str.equals("武大郎")){ iterator.remove(); } System.out.println("str = " + str); } System.out.println("遍历 之后 list = " + list); } }
- 第三种遍历方式:ListIterator 集合
public class Test3 { public static void main(String[] args) { List list = new ArrayList(); list.add("zs"); list.add("lis"); list.add("王五"); list.add("zs"); list.add("武大郎"); list.add("zs"); System.out.println("原始 数据 list = " + list); // 第三种 遍历 Listitoretor 集合 , // 使用 Listitoretor 进行 逆序遍历 // 使用 Listitoretor 对 list 集合中的数据 删除 // 使用 Listitoretor 对 list 集合中的数据 添加 // 使用 Listitoretor 对 list 集合中的数据 修改 ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()) { // 指针向下移动 。 可以 返回 当前这个位置的数据 String str = (String) listIterator.next(); System.out.println("str = " + str); if (str.equals("武大郎")) { listIterator.remove(); } } // 使用 hasPrevious 逆向 遍历 必须 让指针 先进行 向下 移动。 /* while (listIterator.hasPrevious()) { String str = (String) listIterator.previous(); System.out.println("str = " + str); }*/ System.out.println("遍历 之后 list = " + list); } }
- 第四种遍历方式:增强for循环
public class Test4 { public static void main(String[] args) { List list = new ArrayList(); list.add("zs"); list.add("lis"); list.add("王五"); list.add("zs"); list.add("武大郎"); list.add("zs"); System.out.println("原始 数据 list = " + list); // 第四种 遍历 增强 for 循环 for (Object a : list) { String str = (String) a; System.out.println("(String)a = " + str); } } }
List 集合概述及特点:
- List 集合概述:
- 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索类表中的元素
- 与Set 集合不同,列表通常允许重复的元素
- List 集合特点:
- 有索引
- 可以存储重复元素
- 元素存储有序
- List 集合的特有方法:
- void add(int index,E element) //在此集合中的指定位置插入指定的元素
- E remove(int index) //删除指定索引处的元素,返回被删除局的元素
- E set(int index,E element) //修改指定索引处的元素,返回被修改的元素
- E get(int index) //返回指定索引处的元素
- List集合的实现类:
- ArrayList集合:底层是数组结构实现,查询快,增删慢,数组结构的特点;
- LinkedList集合:底层是链表结构实现,查询慢,增删快,队列结构的特点;
- LinkedList集合的特有功能:
- public void addFirst(E e) //在该列表开头插入指定元素
- public void addLast(E e) //将指定的元素追加到此列的末尾
- public E getFirst() //返回此列表的第一个元素
- public E getLast() //返回此列表的最后一个元素
- public E removeFirst() //从此列中删除并返回第一个元素
- public E removeLast() // 从此列表中删除并返回最后一个元素
Set集合的概述及特点:
- Set 集合的特点:
- 不包含重复元素的集合
- 没有带索引的方法,態使用普通的for循环遍历
列表迭代器:
- ListIterator列表迭代器介绍:
- 通过List集合的ListIerator()方法得到,所以说它是List集合特有的迭代器
- 用于允许程序员沿任意方向遍历的列表迭代器,在迭代器期间修改列表,并获取类表中迭代器的当前位置
- ListIterator中的常用方法 :
- E next() //返回迭代中的下一个元素
- boolean hasNext() //如果迭代具有更多元素,则返回true
- E previous() // 返回列表中的上一个元素
- boolean hasPrevious() //如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true。
- void add(E e) //将指定的的元素的插入列表