集合的概念
概念:集合是java中提供的⼀种容器,可以⽤来存储多个数据。
数组:存储⼀组相同数据类型的数据结构。
局限:定长
集合:动态存放多个对象。
动态:集合的⼤⼩随着存储的数据量⽽改变。
多个:0-多个数据
对象:存储类的实例。基本数据类型--->包装类对象。
集合框架图
java.util.Collection下的接口和继承类关系简易结构图:
java.util.Map下的接口和继承类关系简易结构图:
Collection 常用功能
方法 | 描述 |
boolean add(Object obj) | 添加⼀个对象数据 |
boolean addAll(Collection c) | 将⼀个集合中的所有对象添加到此集合中 |
void clear() | 清空此集合中的所有对象 |
boolean contains(Object o) | 检查此集合中是否包含o对象 |
boolean equals(Object o) | 比较此集合是否与指定对象相等 |
boolean isEmpty() | 判断此集合是否为空 |
boolean remove(Object o) | 在此集合中移除o对象 |
int size() | 返回此集合中的元素个数 |
Object[] toArray() | 将此集合转换成数组 |
示例:
//step1:创建⼀个容器
Collection collection1 = new ArrayList();
System.out.println(collection1);
//step2:往容器中添加元素
boolean flag = collection1.add("abc");//返回⼀个boolean值,判断是否添加成功
System.out.println("flag:"+flag);
//System.out.println(collection1);
collection1.add(true);
collection1.add(123);//---->int---->Integer---->Object
System.out.println(collection1);//重写了toString()⽅法
System.out.println("集合的元素个数:"+collection1.size());
System.out.println("-----------------");
Collection c2 = new ArrayList();
c2.add(12);
c2.add(45);
c2.add(67);
collection1.addAll(c2);//将集合中元素⼀次性添加到⽬标集合中
System.out.println(collection1);
System.out.println("---------");
System.out.println(collection1.contains("abc"));
System.out.println(collection1.containsAll(c2));//判断是否包含集合c2中所
有的元素
System.out.println("-------------");
System.out.println(collection1.isEmpty());//判断集合是否为空
System.out.println("------------");
collection1.remove(true);//删除集合中的⼀个元素
collection1.removeAll(c2);//删除指定的集合中所有的元素
System.out.println(collection1);
System.out.println("--------------");
collection1.clear();
System.out.println("------------");
Collection c3 = new ArrayList();
c3.add(123);
c3.add(345);
collection1.add(123);
collection1.add(true);
collection1.add("abc");
System.out.println(collection1);
collection1.retainAll(c3);//交集:仅保留此集合中包含在指定集合中的元素
System.out.println(collection1);
Iterator迭代器
在程序开发中,经常需要遍历集合中的所有元素。
迭代:即Collection集合元素的通⽤获取⽅式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。⼀直把集合中的所有元素全部取出。这种取出⽅式专业术语称为迭代。
Iterator接⼝也是Java集合中的⼀员,但它与Collection、Map接⼝有所不同,Collection接口与Map接口主要用于存储元素,⽽Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器下面介绍⼀下获取迭代器的方法:
public Iterator iterator(): 获取集合对应的迭代器,⽤来遍历集合中的元素的。
Iterator接⼝的常用方法如下:
public E next():返回迭代的下⼀个元素。
public boolean hasNext():如果仍有元素可以迭代,则返回 true。
step1:先获取集合上的迭代器
Iterator it = c1.iterator();
step2:先判断迭代器后是否有数据
it.hasNext()-->boolean
step3:通过迭代器获取集合的元素
it.next()--->E
Collection<String> c1 = new ArrayList<>();
c1.add("aa");
c1.add("bb");
c1.add("cc");
c1.add("dd");
//3.2使⽤迭代器(迭代器专⻔⽤来遍历集合的⼀种⽅式)
//hasNext();有没有下⼀个元素,
//next();获取下⼀个元素
//remove();删除当前元素
Iterator<String> iterator = c1.iterator();
if(iterator.hasNext()){
System.out.println(iterator.next());
//不能使⽤collection删除⽅法,因为遍历同时不能使⽤集合删除⽅法,否则出现并发
修改异常。
//可以使⽤迭代器的删除⽅法
//c1.remove(s);
//iterator.remove();
}
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());//java.util.NoSuchElementException