Collection集合
时间:2020-12-02 00:14:45
收藏:0
阅读:45
Collection集合
集合概述
集合:集合是一个容器,可以存储多个数据,长度可变
集合和数组的区别
- 数组长度是固定的,而集合长度是可变的
- 数组中存储的是同一种类型的元素,可以存储基本数据类型也可以存储引用数据类型,
集合存储的是引用类型元素,同一个集合可以存储不同类型的数据,一般用来存储对象类型
集合的框架
集合根据存储结构可以分为两大类:单列集合和双列集合
单列集合:Collection接口中的子接口或者实现类
双列集合:Map接口中的集合



Collection
- Collection是单列集合的根接口,用于存储一些符合某种规则的元素
- 有两个重要的子接口 List和set
- List接口集合是有序,允许重复的,含有索引
- Set 接口集合是不允许重复的,但不能说是否有序,因为TreeSet和hashSet无序,hashSet的子类LinkedHashSet是有序的
单列集合框架图

Collection集合的常用功能
Collection 集合是所有单列集合的父接口,在Collection集合当中定义的所有单列集合的共性的API方法,适用于所有的集合
- public boolean add(E e):把给定的对象添加到当前的集合当中
- public void clear(): 清空集合中的所有元素.
- public Boolean remove(E e);把给定的对象从当前的集合中删除.
- public boolean contains(E e): 判断当前
- public boolean isEmply(): 判断当前是否为空
- public Boolean size(): 获取当前集合的个数
- public Object[] toArray():把当前集合转化成一个数组
代码演示:
import java.util.ArrayList;
import java.util.Collection;
public class DemoCollection {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
//添加集合元素,返回值是boolean类型的
coll.add("小张");
coll.add("小王");
coll.add("小孙");
coll.add("小李");
boolean b1 = coll.add("小杨");
System.out.println(b1);
//移除集合元素,返回值是boolean类型的
boolean b2 = coll.remove("小王");
System.out.println(b2);
//判断集合元素是否为空
boolean empty = coll.isEmpty();
System.out.println(empty);
//判断集合是否包含指定元素
boolean b3 = coll.contains("小李");
System.out.println(b3);
//查看集合包含的元素个数
int size = coll.size();
System.out.println(size);
Object[] objects = coll.toArray();
for (int i = 0; i <objects.length ; i++) {
System.out.print(objects[i]+" ");
}
System.out.println("-------------");
//清空集合里的所有元素,暂时移除,内存中不做改变
coll.clear();
System.out.println(coll.size());
}
}
迭代器 Iterator
java.util.Iterator 包下的接口





代码演示
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class DemoIterator {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("中国");
coll.add("美国");
coll.add("法国");
coll.add("英国");
//获取集合的迭代器,通过Iterator()方法获得集合的迭代器实现类对象
Iterator<String> iterator = coll.iterator();
//判断集合中是否有下一个元素,没有就会抛出异常
boolean it = iterator.hasNext();
System.out.println(it);//chakan一下是否有下个元素,有就是true
//如果返回true就取出下一个元素
String next = iterator.next();
System.out.println(next);
//由于上面的元素只能一个元素一个元素的取出,所以代码冗余性太高,
// 所以和while循环相结合取出集合中的元素比较方便
while(iterator.hasNext()){
String next1 = iterator.next();
System.out.println(next1);
}
}
}
迭代器的实现原理

在调用Interator接口当中的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next()方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回.
当再次调用next()方法时,迭代器的索引再次向后移动,直到hasNext方法返回false时,表示已经没有下一个元素啦,终止遍历,如果强制取出集合里的末尾不存在的元素,
就会抛出没有元素异常: java.util.NoSuchElementException
增强for循环
在jdk1.5之后出现了一个新的循环结构,for each 循环,一般也称为增强for循环,专门用来遍历数组和集合的,它的内部原理其实是有一个迭代器Iterator,在迭代过程中,不能对集合的增删改查操作.
格式
for(元素的数据类型 变量名 : Collection集合或者数组){
//操作代码
}
代码演示:遍历数组
//int[] static void main(String[] args){
int[] arr = {3,5,7,9,12};
//使用增强for循环遍历arr数组
for(int i : arr){
System.out.println(e);
}
}
代码演示: 遍历集合
#### 泛型
原文:https://www.cnblogs.com/renmiaomiao/p/14068286.html
评论(0)