今天主要介绍集合以及迭代器的使用~~
文章目录
一、Collection集合
1、什么是集合
在java.util包下面。
打个比喻:可以将集合看做一个大袋子,里面可以存放很多东西,与数组类似但又不同
2、数组和集合的区别
相同点:
数组和集合都是容器
不同点:
数组:长度固定,存放同一类型的元素,可以存放任意类型的数据
集合: 长度可以灵活改变,只能存放引用数据类型–如果需要将int类型转换为Integer包装类。
3、集合常用类的基础体系
Collection
:单列集合类的根接口,用于存储一系列符合某种规则的元素,有两个重要的子接口,分别是java.util.List
以及java.util.Set
List:
特点是元素有序且可重复,接口的主要实现类有java.util.ArrayList和java.util.LinkedList
Set:
特点是元素不可重复,接口主要实现类有java.util.HashSet和java.util.LinkedHashSet
4、集合常用的功能
Collection
是所有单列集合的父接口,因此在Collection
中定义了单列集合(List和Set)
通用的一些方法,这些方法可用于操作所有的单列接。
5、代码展示
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
ArrayList<Object> objects = new ArrayList<>();
objects.add(1);
Collection arrayList = new ArrayList();
int startSize = arrayList.size();
arrayList.add("张三");
int endSize = arrayList.size();
System.out.println("开始的长度"+startSize);
System.out.println("结束的长度"+endSize);
// TODO 添加数据
boolean lisi = arrayList.add("李四");
System.out.println(lisi); // true
// TODO 删除数据
boolean zs = arrayList.remove("张三");
System.out.println(zs); // true
// TODO 判断是否包含
boolean Ifzs = arrayList.contains("张三");
System.out.println(Ifzs); // false
// TODO 清空
arrayList.clear();
System.out.println(arrayList.size()); // 0
}
}
6、获取集合中的元素
语法: 集合对象.get();
get
方法是子类的方法,如果此时集合对象是父类类型则会报错,需要强制转换为子类的类型。
7、扩展
ArrayList<Object> objects = new ArrayList<>();
Collection arrayList = new ArrayList();
都是创建了一个集合,但是不同的是第一个定义了一个泛型,意思是只要是Object的子类都能够放到集合中,而第二个没有规定,这个<>里面可以写String....
二、Iterator迭代器
1、什么是迭代
迭代式
Collection
集合元素遍历的一种方式,在取元素之前先判断
集合中是否有元素,如果有,就把这个元素取出来
,继续判断,如果有继续获取元素,直到集合中所有元素全部取出,这种取出方式就是迭代.
2、迭代器的作用
用于遍历
Collection
集合元素,是一个接口,在java.util
包下面,迭代表示重复做某个动作
3、方法
4、Collection和Iterable的联系
Iterable是Collection的父接口
5、Iterable 和 Iterator的区别
Iterable:
可以迭代,表示一种可迭代的能力(提供了获取迭代器的方法)
Iterator
:迭代器具体实现迭代功能(真正的迭代器)
6、获取迭代
Iterator iterator = arrayList.iterator();
7、使用迭代
8、使用迭代遍历集合得到数据
方式一:使用for循环的方式
、string name = list.get(i).toString();
方式二:使用迭代
While(iterator.hasNext()){
String name = iterator.next().toString();
System.out.print(name)
}
步骤:
1、获取迭代器
2、判断是否存在下一个元素 hasNext
3、如果存在则获取下一个元素 next
4、重复2,3步骤直到没有下一个元素
9、注意事项
1、
在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出java.util.NoSuchElementException没有集合元素异常
2、
在进行集合元素获取时,如果添加或异常集合中的元素,将无法继续迭代,将会抛出ConcurrentModificationException并发修改异常。
10、代码演示
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
ArrayList<Object> objects = new ArrayList<>();
objects.add(1);
Collection arrayList = new ArrayList();
int startSize = arrayList.size();
arrayList.add("张三");
int endSize = arrayList.size();
System.out.println("开始的长度"+startSize);
System.out.println("结束的长度"+endSize);
// TODO 添加数据
boolean lisi = arrayList.add("李四");
System.out.println(lisi); // true
// TODO 删除数据
boolean zs = arrayList.remove("张三");
System.out.println(zs); // true
// TODO 判断是否包含
boolean Ifzs = arrayList.contains("张三");
System.out.println(Ifzs); // false
// TODO 清空
arrayList.clear();
System.out.println(arrayList.size()); // 0
}
}