Collection:容器也叫集合
List接口继承了Collection.
List的两个实现类ArrayList底层是用数组实现,增减效率低,查询效率高。
LinkedList底层是用链表实现,增减效率高,查询效率低。
这里用的是ArrayList来演示List的常用方法,不同实现类的常用方法都是一样的。
package 集合List;
import java.util.*;
/**
* collection容器也叫集合
* List有序 可重复
* Set 无序 不可重复
*
*
*学习接口Collection
*list接口的两个实现类,各有优缺点;
*Arraylist用数组实现 增减效率较低 查询效率高
*Linklist用链表实现 增减效率高 查询效率低
*
*
*/
public class study_01 {
public static void main(String[] args) {
//test01();
//test02();
test03();
}
//list常见方法,多位于collection接口中
private static void test01() {
//list常见方法,多位于collection接口中
//List接口继承collection接口
Collection list=new ArrayList<>();//Collection接口
list.add(1);
list.add("a");
list.add("String");
list.add("b");
System.out.println(list.isEmpty());//判断是否为空
System.out.println(list.contains("String"));//是否包含
System.out.println(list);
Iterator iterator=list.iterator();//定义的迭代器
while (iterator.hasNext()){//hashNext()方法是看迭代器是否有下一个元素
Object object=iterator.next();//next获得下一个元素
System.out.println(object);
if ("String".equals(object)){
list.remove(object);//这里的object还在只是容器里没有了remove和delete不同;
//这里因为迭代器没有更新所以String被删除后迭代器的hashNext为false
}
}
System.out.println(list);
Object[] objs=list.toArray();
System.out.println("转化成Object数组"+Arrays.toString(objs));
list.clear();//清空list
System.out.println(list);
}
//演示与list索引有关的方法
private static void test02(){
//List存储的是有序可重复,因为有序所以每个元素都有对应的索引
//这里演示与list索引有关的方法
List list=new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
System.out.println(list);
list.add(2,"赵");//在索引位置添加索引,原先的元素后移;
System.out.println(list);
list.remove(2);//在索引位置移除元素,后面的元素前移到删除元素的索引位置
System.out.println(list);
list.set(2,"宇");//修改索引位置的数据
System.out.println(list);
System.out.println(list.get(2));//返回指定索引位置的元素
//list重要特点有序可重复
list.add("B");
System.out.println(list.indexOf("B"));//从头到尾找到第一个返回索引位置
System.out.println(list.lastIndexOf("B"));//从尾到头找到第一个返回索引位置
}
//测试两个容器之间的元素处理
private static void test03(){
//测试两个容器之间的元素处理
List list=new ArrayList<>();
list.add("赵宇晖");
list.add("赵雪晨");
list.add("王豪杰");
List list1=new ArrayList<>();
list1.add("赵宇晖");
list1.add("张三");
list1.add("李四");
boolean a=list.containsAll(list1);//list容器是否全部包含list1中的内容
System.out.println(a);
list.addAll(list1);//将list1中的内容全部加到list中
System.out.println(list);
list.removeAll(list1);//将list1中有的元素全部从list中取出 包括重复的
System.out.println(list);
System.out.println("list"+list);
System.out.println("list1"+list1);
list.retainAll(list1);//取交集
System.out.println(list);
}
}
不同的应用场景需要使用不同发的实现类,下面是不同应用场景的使用推荐