List特点
1.元素都有下标
2.数据是有序的
3.允许存放重复的元素
*用于List接口的方法测试*
package cn.tedu.collectuon;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*用于List接口的方法测试*/
public class TestList {
public static void main(String[] args) {
//1.创建List接口的多态对象,注意List是接口,不可以直接实例化
List<String> list = new ArrayList<>();
//2.向集合中添加元素
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
list.add("老五");
list.add("老六");
list.add("老七");
System.out.println(list);
//3.测试继承自Collection中的方法
//list.clear();//清空集合
// System.out.println(list);//[]
System.out.println(list.contains("老大"));//true,判断是否包含指定元素
System.out.println(list.isEmpty());//false,判断集合是否为空
System.out.println(list.remove("老七"));//移除集合中指定的元素
System.out.println(list);//[老大, 老二, 老三, 老四, 老五, 老六]
System.out.println(list.size());//6,获取集合中元素的个数
System.out.println(Arrays.toString(list.toArray()));//集合转数组
//4.测试集合间的操作
List<String> list2 = new ArrayList<>();
list2.add("1");
list2.add("2");
list2.add("3");
list2.add("4");
System.out.println(list2);//[1, 2, 3, 4]
System.out.println(list.addAll(list2));//将2集合中的所有元素加到list中
System.out.println(list);
System.out.println(list.containsAll(list2));//判断list中是否包含list中所有的元素
System.out.println(list.removeAll(list2));//移除list中属于list2的所有内容
System.out.println(list);
// System.out.println(list.addAll(1,list2));//将list2集合当中的所有元素加到list集合的1号索引处
// System.out.println(list);
//5.测试List接口中独有的方法
list.add("小八");//追加到最后
list.add(1,"小八");
System.out.println(list);
System.out.println(list.indexOf("小八"));//3,判断元素第一次出现的位置
System.out.println(list.lastIndexOf("小八"));//8,判断元素最后一次出现的位置
System.out.println(list.remove(5));//根据索引删除指定元素
System.out.println(list);
System.out.println(list.get(3));//获取指定位置的元素
System.out.println(list.set(6,"小九"));//在指定索引修改指定元素
System.out.println(list);
//注意add()是添加元素,总个数+1,set()是修改元素,总个数不变
}
}
测试父类接口Collection中的常用方法
package cn.tedu.collectuon;
/*测试父类接口Collection中的常用方法*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
public class TestCollection {
public static void main(String[] args) {
//1.创建Collecyion相关的对象
//Collection c = nre Collection();//报错,因为Collecyion是接口
//<Integer>是泛型,用来约束集合中的元素,这个类型必须是引用类型不能是基本类型
Collection<Integer> c = new ArrayList<>();
//2.测试向集合中存入多个数据
c.add(100);
c.add(200);
c.add(300);
c.add(400);
c.add(500);
// System.out.println(c);//打印查看集合中的元素
//3.测试常用方法
// c.clear();//清空集合中所有的元素
// System.out.println(c);
System.out.println(c.hashCode());//获取集合对象的哈希码值
System.out.println(c.toString());//打印集合中所有元素,重写后的实现
System.out.println(c.equals(200));//false,不能拿集合对象与200作比较
System.out.println(c.contains(200));//true,判断c集合中是否含有元素2000
System.out.println(c.isEmpty());//false,判断集合是否为空
System.out.println(c.remove(200));//删除c集合中指定元素200
System.out.println(c);//100,300,400,500
System.out.println(c.size());//4,获取集合中元素的个数
Object[] array = c.toArray();//将指定的集合c转为数组,使用多态思想,数组类型是Object
System.out.println(array);//[Ljava.lang.Object;@1b6d3586,打印的是地址值
System.out.println(Arrays.toString(array));//[100, 300, 400, 500],打印的是值
//4.测试多个集合之间的操作
Collection<Integer> c2 = new ArrayList<>();
c2.add(1);
c2.add(2);
c2.add(3);
System.out.println(c2);//[1, 2, 3]
c.addAll(c2);//把c2集合中所有元素添加到c集合中
System.out.println(c);//[100, 300, 400, 500, 1, 2, 3]
System.out.println(c2);//[1, 2, 3],c2集合本身没有改变
System.out.println(c.containsAll(c2));//true,判断c集合是否包含c2集合中的所有元素
System.out.println(c.contains(5));//false,判断c集合是否包含指定元素5
System.out.println(c.removeAll(c2));//删除c集合中属于c2集合所有的元素
System.out.println(c);//[100, 300, 400, 500]
//retainAll(c2)的作用是保存当前集合c与参数集合c2的公共元素
//删掉c集合中不属于公共元素的部分
c.add(999);
System.out.println(c);//[100, 300, 400, 500, 999]
System.out.println(c.retainAll(c2));
System.out.println(c);//[]
System.out.println(c2);//[1, 2, 3]
c.add(3);
c.add(100);
System.out.println(c);//[3,100]
System.out.println(c.retainAll(c2));
System.out.println(c);//[3]
System.out.println(c2);//[1, 2, 3]
//5.迭代/遍历集合
/*迭代步骤
* 1.获取集合的迭代器 c.iterator
* 2.判断集合中是否有下一个元素可以迭代 it.hasNext()
* 3.*/
Iterator<Integer> it = c2.iterator();//获取迭代器
while (it.hasNext()){//判断是否有下一个元素可迭代,如果有,循环继续
// System.out.println(it.next());
Integer num = it.next();//获取本轮迭代到的元素
System.out.println("本次迭代到的元素:"+num);
}
}
}