Day15
Collection接口
1.集合概念
是用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且还提供了一组操作成批对象的方法.Collection接口层次结构 中的根接口,接口不能直接使用,但是该接口提供了添加元素/删除元素/管理元素的父接口公共方法.
由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的.
2.集合的继承结构
collection爷接口
list父类接口【数据有下标,有序,可重复】
ArraysList子类
LinkedList子类
set父类接口【数据无下标,无序,不可重复】
HashSet子类
Map父类接口【键值对的方式存数据】(不是collection的子类)
HashMap子类
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
//测试COLLECTION相关API
public class TestCollection {
public static void main(String[] args) {
//1.接口
//Collection c= new Collection() 报错因为接口不能实例化
Collection<Integer> c = new ArrayList();//创建多态对象
c.add(100);//向集合添加元素
c.add(200);//向集合添加元素
c.add(300);//向集合添加元素
c.add(400);//向集合添加元素
c.add(500);//向集合添加元素
System.out.println(c);//直接打印
//c.clear();清空集合元素
//
System.out.println(c.contains(300));//true判断集合是否包含指定元素
System.out.println(c.hashCode());//哈希码值127240651
System.out.println(c.isEmpty());//判断集合是否为空集合
System.out.println(c.remove(300));//移除首次出现的元素并判定判断是否去除指定元素
System.out.println(c.size());//获取当前集合元素的个数
System.out.println(c.equals(200));//false,集合对象与Integer 200 不相等
Object[] array = c.toArray();//Alt+回车 快捷定义变量
//将制定的集合对象转成数组
System.out.println(Arrays.toString(array));
Collection <Integer> c2 = new ArrayList();
c2.add(2);
c2.add(4);
c2.add(6);
System.out.println(c2);//[2, 4, 6]
c.addAll(c2);//把c2集合添加到c集合中
System.out.println(c);//[100, 200, 400, 500, 2, 4, 6]
System.out.println(c2);//[2, 4, 6]
System.out.println(c.contains(c2));//false 因为c集合中没有一个‘c2’元素
System.out.println(c.containsAll(c2));true判断c集合是否包含c2集合的所有元素
System.out.println(c.retainAll(c2));//true取两集合间的交集并判断是否有交集
System.out.println(c);//[2,4,6]
System.out.println(c.removeAll(c2));//删除c集合中c2集合的所有元素并判断
c.add(100);//向集合添加元素
c.add(200);//向集合添加元素
c.add(300);//向集合添加元素
c.add(400);//向集合添加元素
c.add(500);//向集合添加元素
System.out.println(c);//直接打印
//迭代/遍历集合中的元素
/*
* 1.获取集合对应的迭代器 c.iterator()
* 2.判断集合中是否有有下个元素 it.hasNext()
* 3.获取当前迭代到的元素it.next()*/
Iterator<Integer> it = c.iterator();//
while (it.hasNext()){
Integer num = it.next();//next()获取本轮循环迭代到的元素
System.out.println(num);
}
}
}
3.List父类接口
有序的colletion(也称为序列).
特点 :1>.元素都有下标
2>.数据是有序的
3>.允许存放重复的元素
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//List接口---抽象类
public class TestList {
public static void main(String[] args) {
//多态对象实现
List<String> list = new ArrayList();
list.add("大力娃");
list.add("二娃");
list.add("三娃");
list.add("火娃");
list.add("水娃");
list.add("隐身娃");
list.add("七娃")