Collection是一个接口,不能被实例化。但是Java封装了实现类。可以借助于多态的形式来实例化出来父类引用。这个接口下面有很多方法。
Collection下面有两个重要的子接口List接口 和 Set接口。
可以用List接口下面的ArryList类来实现Collection这个接口,用多态的方法。
Collection下的方法
增:
boolean add(E e);添加一个数据到集合中
boolean addAll(Collection<? extends E> c); 将一个集合数据添加到另外一个集合中
Collection<? extends E>:元素 是E本类或者继承的E,才能添加到另外一个集合中
import java.util.ArrayList;//导入ArrayList这个类
import java.util.Collection;//导入Collection这个接口
public class Demo1 {
public static void main(String[] args) {
//用多态的方法创建一个容器(父类的引用指向子类的对象)
Collection<String> list = new ArrayList<>();
//添加一个数据到集合中
list.add("小黑");
list.add("小白");
System.out.println(list);
Collection<String> list1 = new ArrayList<>();
//将一个集合数据添加到另外一个集合中
list1.add("小红");
list1.addAll(list);
System.out.println(list1);
//是E本类或者继承的E,才能添加到另外一个集合中
}
}
删:
boolean remove(Object obj);删除指定的元素
boolean removeAll(Collection<? extends E> c); 删除的是交集
void clear();清空所有的元素
import java.util.ArrayList;
import java.util.Collection;
public class Demo10 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
//删除指定的元素
list.add("小黑");
list.add("小白");
list.add("小明");
list.remove("小白");
System.out.println(list);//输出结果[小黑, 小明]
Collection<String> list1 = new ArrayList<>();
//删除的是交集
list1.add("小黑");
list1.add("小白");
list1.add("小明");
list1.add("小虎");
list1.removeAll(list);
System.out.println(list1);//输出结果[小白, 小虎]
Collection<String> list2 = new ArrayList<>();
//清空所有元素
list2.add("小黑");
list2.add("小白");
list2.add("小明");
list2.add("小虎");
list2.clear();
System.out.println(list2);//输出结果[]
}
}
查:
int size(); 查看集合中元素的个数
Object[] toArray(); 将集合转为Object类型数组
boolean contains(Object obj); 集合中是否包含这个元素 如果包含返回true
boolean containsAll(Collection<? extends E> c);一个集合是否另外一个集合子集合
boolean isEmpty(); 判断集合是否为空
import java.util.ArrayList;
import java.util.Collection;
public class Demo11 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
//查看集合中元素的个数
list.add("小黑");
list.add("小白");
list.add("小明");
list.add("小虎");
System.out.println(list.size());//输出结果4
Collection<String> list1 = new ArrayList<>();
//将集合转为Object类型数组
list1.add("小黑");
list1.add("小白");
list1.add("小明");
list1.add("小虎");
Object[] objects = list1.toArray();
//使用for循环集合进行遍历
for (int i = 0; i < objects.length; i++) {
System.out.print( " " + objects[i]);
//输出结果 小黑 小白 小明 小虎
}
//集合中是否包含这个元素 如果包含返回true
System.out.println(list1.contains("小虎"));//输出结果true
//一个集合是否另外一个集合子集合
System.out.println(list.containsAll(list1));//输出结果true
//判断集合是否为空
Collection<String> list2 = new ArrayList<>();
System.out.println(list2.isEmpty());//输出结果true
}
}
遍历集合中的数据
有三种方法
1.使用for循环
2.增强for循环
3.迭代器
1.for循环
import java.util.ArrayList;
import java.util.Collection;
public class Demo12 {
public static void main(String[] args) {
Collection<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list);
//将集合转为数组,然后再for循环遍历
Object[] objects = list.toArray();
for (int i = 0; i < objects.length; i++) {
System.out.print(objects[i]);
}//输出结果12345
}
}
2.增强for循环
语法格式
for (集合中元素的数据类型 临时变量 : 集合或者数组) {
System.out.println(临时变量)
}
import java.util.ArrayList;
import java.util.Collection;
public class Demo13 {
public static void main(String[] args) {
Collection<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list);
//将list集合 进行迭代,每次取一个值然后赋值给integer
// 将list集合中的数据挨个的赋值给integer
for (Integer integer : list) {
System.out.print(integer);
}//输出结果为12345
}
}
3.迭代器
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo14 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("孙悟空");
list.add("猪八戒");
list.add("沙和尚");
list.add("唐僧");
//用迭代器进行数据的遍历
//通过集合对象创建迭代器对象 cursor 光标
Iterator<String> iterator = list.iterator();
//第一个方法 hasNext(); 判断一个集合中是否有下一个元素
while (iterator.hasNext()){
//next() 一个方法干了两件事情,
//会返回当前光标下面的元素。并把光标挪到下一元素的位置
System.out.println(iterator.next());
//输出结果为孙悟空
//猪八戒
//沙和尚
//唐僧
}
}
}