一、集合
什么是集合
- 集合就是一个存放数据的容器,准确的说是放数据对象引用的容器
- 集合类存放的都是对象的引用,而不是对象的本身
- 集合类型主要有3中:set(集)、List(列表)、map(映射)
集合的特点
- 集合用于存储对象的容器,对象是用来封装数据,对象多了也需要存储集中式管理。
- 和数组对比对象的大小不确定,因为集合是可变长的,数组需要提前定义大小。
集合跟数组的区别
- 数组长度固定,集合长度不固定!
- 数组可以存储基本类型跟引用类型,集合只能存储引用类型!
- 数组存储的元素必须是同一个数据类型,集合存储的对象可以是不同的数据类型
存放位置:java.util.*
二、Collection接口
- Collection是该体系结构的根接口,代表一组对象,称为“集合”!
- List接口的特点:有序,有下标,元素可以重复
- Set接口的特点:无序,无下标,元素不能重复
- 结构图如下
- Collection父接口的方法主要有以下:
方法 | 功能 |
boolean add(object obj) | 添加一个对象 |
boolean addAll(Collection c) | 将一个集合中的所有对象添加到此集合中 |
void clear() | 清空此集合中的所有对象 |
boolean equals(Object o) | 检查此集合中是否包含o对象 |
Boolean isEmpty() | 判断此集合是否为空 |
boolean remove(object o) | 在此集合中溢出o对象 |
int size() | 返回此集合中的元素个数 |
Object[] toArray() | 将此集合转换成数组 |
迭代器(iterator)
- 迭代器又称为遍历器,也就是将内容遍历出来的一个对象
- 迭代器中有三个主要执行的方法,分别是hasnext();next();remove();
- hasnaxt:有没有下一个元素
- next:获取下一个元素
- remove:删除当前元素
- 迭代器会先执行查看每个元素有没有值,如果有,获取到这个元素,如果全部都没有了之后,便结束运行!
下面使用代码测试Collection接口以及iterator迭代器的使用
package com.Collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01 {
public static void main(String[] args) {
//创建集合
Collection collection = new ArrayList(); //使用List接口中的Array对象
//1、添加元素
collection.add("苹果");
collection.add("香蕉");
collection.add("西瓜");
collection.add("草莓");
System.out.println("元素的个数为:"+collection.size());
System.out.println(collection);
//2、删除元素
collection.remove("苹果");
System.out.println("元素的个数为:"+collection.size());
System.out.println(collection);
//3、遍历元素【重点】
// 3.1、使用增强for循环遍历
System.out.println("-------------1、使用增强for循环遍历---------------");
for (Object s:collection
) {
System.out.println(s);
}
// 3.2、使用迭代器遍历iterator
System.out.println("-------------2、使用迭代器遍历iterator---------------");
Iterator it = collection.iterator();
while(it.hasNext()){
String s = (String) it.next();
System.out.println(s);
}
it.remove(); //删除一个,从最后一个删除
System.out.println("元素个数:"+collection.size());
System.out.println(collection);
//4、判断
System.out.println(collection.contains("西瓜")); //判断是否存在西瓜
System.out.println(collection.isEmpty()); //是否该集合是否为空 空为true
}
}
结果图
总结:在使用迭代器遍历集合内的数组时,不能使用collection.remove方法去删除,因会为提示异常,只能通过迭代器的iterator.remove方法删除!并且Collection接口不能被实例化!
注:文章仅做个人学习日记,不做学习建议