1-1.概述
集合,是Java中提供的一种容器,可以用来存储多个数据。
集合与数组的区别:数组的长度是固定不变的,集合的长度是可变的;数组中存储的是同一类型的元素,可以存储基本数据类型,也可以存储对象,而在集合中只能对象。
1-2.集合的基本框架介绍
常见集合有:Vector集合(有序集合),ArrayList集合(有序集合),LinkedList集合(有序集合),TreeSet集合(无序集合,存入和取出的顺序可能不一样),HashSet集合(无序集合,存入和取出的顺序可能不一样),LinkedHashSet集合(有序集合)。
在学习集合中,应该掌握如何使用集合存储数据;会遍历集合,把数据取出来;掌握每种集合的特性。
1-3.LIst接口:
是Vector集合,ArrayList集合,LinkedList集合的共性抽取,形成的父类(接口);
1).是有序的集合(存储和取出元素的顺序相同)。
2).允许存储重复的元素。
3).有索引,可以使用普通的for循环遍历。
1-4.Set接口:
是TreeSet集合,HashSet集合的共性抽取,形成的父类(接口),LinkedHashSet集合(有序集合)是HashingSet的子类;
1).不允许存储重复的元素;
2).没有索引(不能使用普通的for循环遍历)。
Collection接口:
定义的是所有单列集合中共性的方法;
所有的单列集合都可以使用共性的方法。
没有带索引的方法。
集合的学习方式:
1).学习顶层:学习顶层接口/抽象类中的共性方法,所有子类都可以使用。
2).使用底层:底层不是接口就是抽象类,无法创建对象使用,需要使用底层的子类创建对象使用。
1-5.Collection的常用功能:
1).public bollenan add(E e);用于把给定对象添加到当前集合中;
2).public clear();用于清除集合中的所有元素;
3).public boolean remove(E e);把给定的对象在当前集合中删除;
4).public boolean isEmpty();判断是否为空;
5).public int size();返回集合中元素的个数;
6).public boolean contains(E e);用于判断集合中是否含有给定的对象;
7).public Object[ ] toArray();把集合中的元素存储到数组中。
2-1.Iterator接口的介绍
是对集合进行迭代的迭代器。
java.util.Iterator接口:迭代器(对集合进行遍历)。
2-2.Iterator的两个常用方法:
1).boolean hasNext();
判断集合中是否还有下一个元素,若有则返回ture,没有则返回flase。
2).E next();
判断迭代的下一个元素(做两件事:先去除下一个元素,然后指针后移一位)。
注意:Iterator迭代器是接口,无法使用,需要使用Iterator接口的实现类的对象。
获取实现类的方法比较特殊,在Colleation接口中有一个方法叫iterator(),这个方法返回的就是迭代器的实现类对象。
Iterator iterator()返回的就是在此Colleation的元素上进行迭代的迭代器。
2-3.迭代器使用步骤
1).使用集合中的方法iterator获取迭代器的实现类对象,使用Iterator接口接收(这是一个多态)。
2).使用Iterator接口中的方法hasNext判断是否还有下一个元素。
3).使用Iterator接口中的方法next取出集合中下一个元素。
注意:Iterator接口是有泛型的,迭代器的泛型紧跟着集合走,集合是什么泛型,迭代器就是什么泛型。
当没有元素可以在取出时就抛出异常(NoSuchElementException)。
2-4.增强for循环
其底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写。
是Java1.5之后的特性。
Collection extends Iterator:所有的单列集合都可以使用增强for循环。
public interface Iterable实现这个接口允许对象成为“foreach”语句的目标。
增强for循环是用来遍历集合和数组的。
格式:
for(集合或数组的数据类型 变量名:集合名或数组名){ S.out(变量名);}
注意:该for循环必须有被遍历的目标,目标只能是Collection或者都是数组,且该for循环仅作为遍历操作出现,不能在遍历的过程中对元素进行增删操作。