集合框架与collection接口
1.集合框架
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tz2pOeU3-1588401994722)(E:\javaclass\集合框架.png]
1.1 学习集合的目标
1.会使用集合储存数据
2.会遍历集合,把数据取出来
3.掌握每种集合的特性
1.2 学习集合的方法
1.学习顶层,学习顶层的接口/抽象类 中共性的方法。所有的子类都可以使用。
2.使用底层,顶层不是接口就是抽献类,无法创建对象。需使用底层的子类创建对象使用。
2.Collection接口
2.1.Java类集的引出
类集属于动态数组,数组的缺陷是长度固定。于是JDK1.2之后引入集合类
2.2 定义
public interface Collection<E> extends Iterable<E>
Collection接口是所有单列集合的最顶层的接口,里面定义可所有单列集合的共性方法,任意的单列集合都可以使用Collection 接口中的方法
范例:定义一个集合类:使用多态的方法
Collection<String> coll = new ArrayList<>();
打印结果为[],说明重写了toString()
方法
2.3 Collection接口中的常用方法
1.向集合中添加数据
public boolean add(E e);
将指定 collection 中的所有元素都添加到此 collection 中(可选操作
boolean addAll(Collection<? extends E> c);
2.清空集合数据:清空元素但不删除集合
public void clear();//
3.查找数据是否存在
public boolean contains(Object o);
4.取得集合长度
public int size();
5.将集合变为对象数组返回
public Object[] toArray();
6.取得的Iterator接口对象,用于集合输出
public Iterator<E> iterator();
3.迭代器
上述的第六种方法,用于集合类的输出,此方法为Iterable接口中的方法。用于返回在此Collection的元素上进行迭代的迭代器。
public Iterator<E> iterator();
3.1 Iterator接口(迭代器)与 增强for循环
此接口用于对集合进行遍历,内置了增强for循环的使用;即只要实现了这个接口,就可以使用增强for循环
java.util.Iterator
3.1.1 Iterator 中的方法
1…使用Iterator接口中的方法 hasNext()
判断是否有下一个元素
2…使用Iterator接口中的方法next()
取出集合中的下一个元素。
3.1.2迭代器
集合的类型有很多种,每一种集合存、取数据的方式是不同的,将可以通用的取出集合中元素的方法叫做迭代器。
3.1.3迭代
即Collection集合元素的通用获取方式,在取出元素之前先判断集合中有没有元素,如果有,就把这个元素取出。继续判断,如果还有继续取出,直到将这个集合中的所有元素都取出,这种取出方式的专业术语:迭代;
3.2 迭代器的使用
3.2.1 使用步骤
1.先使用集合中的方法iterator()
获取迭代器的实现类对象,使用Iterator接口接收(多态)
Iterator 接口也是有泛型的,迭代器的泛型跟着集合类走,集合是什么泛型,迭代器就是什么泛型;
2.判断下一个元素是否存在;
3.取出下一个元素;
没有元素但是执行取出操作会抛出:NoSuchElementsException
实例:
package IteratorTest;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* @Name: Iterstor 迭代器的使用
* @Author:ZYJ
* @Date:2019-05-30-21:32
* @Description:
*/
public class TestDemo {
public static void main(String[] args) {
//获取迭代器实现类对象
Collection<String> coll = new ArrayList<>();
coll.add("hello");
coll.add("java");
coll.add("world");
//获取迭代器的实现类对象,并把索引指向集合的-1索引
Iterator<String> it = coll.iterator();
while (it.hasNext()){
//取出下一个元素,并把指针移至下一位。
String str = it.next();
System.out.println(str);
}
}
}
3.2.2 增强for循环
使用迭代器取出元素的方法是重复的过程,可以使用循环取出元素,此时引出增强for()循环,用于遍历集合和数组。
增强for循环的底层也是迭代器
格式:
for(数据类型 临时变量 : 数组/聚合){
//循环次数为数组长度,而每一个循环都会顺序取出数组中的一个元素赋给临时变量
}
范例:
package IteratorTest;
import java.util.ArrayList;
/**
* @Name:
* @Author:ZYJ
* @Date:2019-05-30-21:52
* @Description:
*/
public class foreachDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for(String s :list){
System.out.println(s);
}
}
}
注意:增强for循环必须有被遍历的目标,目标只能是数组/Collection。增强for循环仅为遍历操作出现。