1.集合类Collection的概述
2.Collection集合遍历以及集合转数组遍历
3.Collection存储自定义对象并遍历练习
4.Iterator迭代器,集合专用的遍历方式
5.Iterator集合迭代器遍历练习
集合类Collection的概述
集合的由来:
-
我们学习的是面向对象的语言,而面向对象语言对事物的描述是通过对象体现的
-
为了方便对多个对象进行操作,我们就必须把这个对象进行存储,
而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量 -
而这个变量不可能是StringBuffer和数组,因为StringBuffer的结果是一个字符串不一定满足我们的需求,所以我们只能选择数组,这就是对象数,
-
而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候为了适应变化 的需求,Java就提供了集合类供我们使用
-
数组和集合的区别? A:长度区别 数组的长度是固定不变的 集合长度可变 B:内容不同 数组存储的是同一类型的元素 集合可以存储不同类型的元素 C:元素的数据类型问题 数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用类型
-
集合是存储多个元素的,存储多个元素也是有不同需求的
比如说,我想要这多个元素不能有一样的
我想要这多个元素那一定的顺序进行排序
针对不同的需求,Java就提供了不同的集合类,这些集合类的数据结构(数据的存储方式)不同
Collection的功能概述:
1:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素
2:删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素
3:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAll(Collection c)
判断集合中是否包含指定的集合元素
boolean isEmpty():判断集合是否为空
4:获取功能
Iterator<E> iterator()(重点)
5:长度功能
int size():元素的个数
面试题:
数组有没有length()方法呢? 没有
字符串有没有length()方法呢? 有
集合有没有length()方法呢? 没有
6:交集功能
boolean retainAll(Collection c):两个集合都有的元素
7:把集合转换为数组
Object[] toArray()
首先我们先测试一下基本的功能
boolean add(Object obj):添加一个元素
import java.util.ArrayList;
import java.util.Collection;
class test{
public static void main(String[] args) {
//创建集合对象
//Collection c = new Collection();这是因为接口不能实例化
ArrayList c = new ArrayList();
System.out.println("c:"+c);
//输出结果为:c:[]
c.add("hello");
c.add("world");
c.add("Java");
System.out.println("c:"+c);
//输出结果为:c:[hello, world, Java]
}
}
void clear():移除所有元素
boolean remove(Object o):移除一个元素
import java.util.ArrayList;
import java.util.Collection;
class test{
public static void main(String[] args) {
//创建集合对象
ArrayList c = new ArrayList()
c.add("hello");
c.add("world");
c.add("Java");
//void clear():移除所有元素
c.clear();
System.out.println("c:"+c);
//输出结果为:c:[]
-----------------------------------------------------------------
//boolean remove(Object o):移除一个元素
System.out.println("remove:"+c.remove("hello"));
System.out.println("c:"+c);
//输出结果为:c:[world, Java]
----------------------------------------------------------------
//如果移除的元素不在集合中
//boolean remove(Object o):移除一个元素
System.out.println("remove:"+c.remove("javaee"));
//输出结果为:true
System.out.println("c:"+c);
//输出结果为:c:[hello, world, Java]
}
}
boolean contains(Object o):判断集合中是否包含指定的元素
import java.util.ArrayList;
import java.util.Collection;
class test{
public static void main(String[] args) {
//创建集合对象
ArrayList c = new ArrayList();
c.add("hello");
c.add("world");
c.add("Java");
System.out.println("contains:"+c.contains("hello"));
//输出结果为:contains:true
System.out.println("javaee");
//输出结果为:contains:false
System.out.println("c:"+c);
//输出结果为:c:[hello, world, Java]
}
}
boolean isEmpty():判断集合是否为空
import java.util.ArrayList;
import java.util.Collection;
class test{
public static void main(String[] args) {
//创建集合对象
ArrayList c = new ArrayList();
c.add("hello");
c.add("world");
c.add("Java");
System.out.println("isEmpty:"+c..isEmpty());
//输出结果为:isEmpty:false
//如果将clear调用过来
c.clear();
System.out.println("isEmpty:"+c..isEmpty());
//输出结果为:isEmpty:true
System.out.println("c:"+c);
//输出结果为:c:[]
}
}
int size():元素的个数
import java.util.ArrayList;
import java.util.Collection;
class test{
public static void main(String[] args) {
//创建集合对象
ArrayList c = new ArrayList();
c.add("hello");
c.add("world");
c.add("Java");
System.out.println("size:"+c.size());
//输出结果为:size:3
System.out.println("c:"+c);
//输出结果为:c:[hello, world, Java]
}
}
boolean addAll(Collection c):添加一个集合的元素
import java.util.ArrayList;
import java.util.Collection;
public class collectionDemo2 {
public static void main(String[] args) {
//创建对象1
Collection c1 = new ArrayList();
//创建对象2
Collection c2 = new ArrayList();
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java5");
c2.add("Java6");
c2.add("Java7");
//boolean addAll(Collection c):添加一个集合的元素
System.out.println("addAll:"+c1.addAll(c2));
//addAll:true
System.out.println("c1:"+c1);
System.out.println("c2:"+c2);
//c1:[Java1, Java2, Java3, Java4, Java5, Java6, Java7]
//c2:[Java5, Java6, Java7]
}
}
boolean removeAll(Collection c):移除一个集合的元素(只要有一个元素被移除了,就返回true。)
import java.util.ArrayList;
import java.util.Collection;
public class collectionDemo2 {
public static void main(String[] args) {
//创建对象1
Collection c1 = new ArrayList();
//创建对象2
Collection c2 = new ArrayList();
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java4");
c2.add("Java5");
c2.add("Java6");
//boolean removeAll(Collection c):移除一个集合的元素
System.out.println("removeAll:"+c1.removeAll(c2));
//removeAll:true
System.out.println("c1:"+c1);
System.out.println("c2:"+c2);
/*c1:[Java1, Java2, Java3]
*c2:[Java4, Java5, Java6]
* */
}
}
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素
只有包含所有的元素,才叫包含
import java.util.ArrayList;
import java.util.Collection;
public class collectionDemo2 {
public static void main(String[] args) {
//创建对象1
Collection c1 = new ArrayList();
//创建对象2
Collection c2 = new ArrayList();
/*c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java4");
c2.add("Java5");
c2.add("Java6");
//boolean containsAll(Collection c):
//判断集合中是否包含指定的集合元素
System.out.println("containsAll:"+c1.containsAll(c2));
//输出结果为containsAll:false
System.out.println("c1:"+c1);
//c1:[Java1, Java2, Java3, Java4]
System.out.println("c2:"+c2);
//c2:[Java4, Java5, Java6]
* */
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java1");
c2.add("Java2");
c2.add("Java3");
c2.add("Java4");
System.out.println("containsAll:"+c1.containsAll(c2));
//containsAll:true
System.out.println("c1:"+c1);
//c1:[Java1, Java2, Java3, Java4]
System.out.println("c2:"+c2);
//c2:[Java1, Java2, Java3, Java4]
}
}
boolean retainAll(Collection c):两个集合都有的元素(交集)
思考元素去哪了,返回的boolean又是什么意思呢?
解答:
假设有两个集合A,B。
A对B做交集,最终的结果保存在A中,B不变。
返回值表示的是A是否发生过改变
如果A变返回true否则返回false
import java.util.ArrayList;
import java.util.Collection;
public class collectionDemo2 {
public static void main(String[] args) {
//创建对象1
Collection c1 = new ArrayList();
//创建对象2
Collection c2 = new ArrayList();
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java5");
c2.add("Java6");
c2.add("Java7");
//boolean retainAll(Collection c)
System.out.println("retainAll:"+c1.retainAll(c2));
//输出结果为:retainAll:true
System.out.println("c1:"+c1);
//c1:[]
System.out.println("c2:"+c2);
//c2:[Java5, Java6, Java7]
--------------------------------------------------------------------
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java3");
c2.add("Java4");
c2.add("Java5");
c2.add("Java6");
c2.add("Java7");
//boolean retainAll(Collection c)
System.out.println("retainAll:"+c1.retainAll(c2));
//输出结果为:retainAll:true
System.out.println("c1:"+c1);
//c1:[Java3, Java4]
System.out.println("c2:"+c2);
//[Java3, Java4, Java5, Java6, Java7]
--------------------------------------------------------------------
c1.add("Java1");
c1.add("Java2");
c1.add("Java3");
c1.add("Java4");
c2.add("Java1");
c2.add("Java2");
c2.add("Java3");
c2.add("Java4");
//boolean retainAll(Collection c)
System.out.println("retainAll:"+c1.retainAll(c2));
//输出结果为:retainAll:false
System.out.println("c1:"+c1);
//c1:[Java1, Java2, Java3, Java4]
System.out.println("c2:"+c2);
//c2:[Java1, Java2, Java3, Java4]
}
}