ArrayList
常见使用
/*Arraylist集合*/
//创建ArrayList容器对象,泛型指定对象(容器)中元素类型
//ArrayList容器基于数组结构
List<String> yy=new ArrayList<>(); //接口声明,面向对象变成又称为面向接口编程
//为容器添加元素,返回Boolean值,true为添加成功,false为添加不成功
boolean yang = yy.add("yang");
boolean jing = yy.add("jing");
System.out.println(yang); //true
System.out.println(jing); //true
/**
*无返回值,在指定索引位置添加元素,当前位置如有元素,则整体向后移位
*/
//索引值不能大于或等于元素个数,否则越界异常
yy.add(1,"da");
System.out.println("-----使用for循环遍历容器中的元素------");
boolean yang1 = yy.remove("yang");
System.out.println(yang1); //true
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); // da jing
}
System.out.println("-----删除指定索引元素------");
//删除容器中指定索引位置元素,并且返回删除元素
String remove = yy.remove(1);
System.out.println(remove); //jing
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); //da
}
System.out.println("-----删除指定元素------");
//删除容器中指定元素(全部删除),返回boolean值,true为删除成功,false为容器中不存在指定元素
boolean yang2 = yy.remove("yang");
System.out.println(yang2); //false
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); //da
}
System.out.println("-----替换元素------");
String ee = yy.set(0, "替换");//替换指定位置元素,并返回被替换的元素
System.out.println(ee); //da
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); //替换
}
System.out.println("-----清空容器------");
yy.clear(); //清空容器中所有元素,无返回值
System.out.println(yy.size()); // 0 查看容器中元素的个数,无返回值,容器已被清空
System.out.println("-----判断容器是否为空------");
boolean hen = yy.add("hen");
boolean qiang = yy.add("qiang");
boolean empty = yy.isEmpty(); //如果容器为空返回true,否则返回false
System.out.println(empty);
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); //false hen qiang
}
System.out.println("-----判断容器中是否包含指定元素------");
boolean qiang1 = yy.contains("qiang"); //判断容器中是否包含指定元素,包含返回true,否则返回false
//参数类型为object数据类型
boolean contains1 = yy.contains(1);
boolean contains3 = yy.contains(3);
System.out.println(qiang1); //true
System.out.println(contains1); //false
System.out.println(contains3); //false
System.out.println("-----查找元素在容器中第一次或最后一次出现的位置(返回索引值)-----");
//添加一个重复元素
boolean hen1 = yy.add("hen");
//返回容器中元素第一次出现的索引,有返回当前索引值,无返回-1
int i1 = yy.indexOf("hen"); //返回元素在容器中第一次出现的元素
int i2 = yy.indexOf(2); //无索引元素时返回-1
int i3 = yy.lastIndexOf("hen"); //返回元素在容器中最后一次出现的位置
for (int i=0;i<yy.size();i++){
System.out.println(yy.get(i)); // hen qiang hen
}
System.out.println(i1); // 0
System.out.println(i2); // -1
System.out.println(i3); // 2
System.out.println("-----将单例集合转换为数组-----");
System.out.println("-----转换为Object[]数组-----");
//将ArrayList集合转换为Object[]数组
Object[] objects = yy.toArray(); //yy容器中的元素本质上仍然为Object类型,泛型不能改变真正的数据类型
for (int i = 0;i<objects.length; i++){
String str = (String) objects[i];
System.out.println(str); // hen qiang hen
}
System.out.println("-----转换为指定类型数组-----");
//将ArrayList集合转换为指定类型数组(根据泛型进行转换)
//创建一个新数组接收集合中元素,为数组开辟指定长度空间,长度为集合的数据个数
System.out.println(yy.size()); //3
String[] strings = yy.toArray(new String[yy.size()]);
for (int i=0;i<strings.length;i++){
System.out.println(strings[i]); //hen qiang hen
}
并集操作
System.out.println("-----容器的并集操作-----");
//创建两个ArrayList集合
ArrayList<String> strings1 = new ArrayList<>();
boolean ji = strings1.add("ji");
boolean he = strings1.add("he");
System.out.println(ji); //true
System.out.println(he); //true
ArrayList<String> strings2 = new ArrayList<>();
boolean jii = strings2.add("集");
boolean hee = strings2.add("合");
System.out.println(jii); //true
System.out.println(hee); //true
//创建一个空集合
ArrayList<String> strings3 = new ArrayList<>();
//将strings1和strings2集合合并
boolean b = strings1.addAll(strings2);
System.out.println(b); //true
//不是集合不能直接转换为其它类型数组? 已经解决
for (String h:strings1){
System.out.println(h); //ji he 集 合
}
//非空集合合并空集合,合并失败,返回false,仍为非空集合
//空集合合并非空集合,合并成功,返回true,空集合为非空集合所有元素
//合并时的先后顺序影响返回的Boolean值
boolean b1 = strings3.addAll(strings1);
System.out.println(b1);
for (int i=0;i<strings3.size();i++){
System.out.println(strings3.get(i)); //ji he 集 合
}
交集操作
System.out.println("-----容器的交集操作-----");
//创建三个ArrayList集合,两个非空集合,一个空集合
ArrayList<String> vv = new ArrayList<>();
vv.add("a");
vv.add("b");
vv.add("c");
ArrayList<String> bb = new ArrayList<>();
bb.add("b");
bb.add("c");
bb.add("d");
ArrayList<String> nn = new ArrayList<>();
//非空集合求交集
boolean b2 = vv.retainAll(bb); //true
System.out.println(b2);
for (String k:vv){
System.out.println(k); //b c
}
//非空与空集合求交集
//交集返回true,成功,集合中无元素,为空集
boolean b3 = vv.retainAll(nn);
System.out.println(b3); //true
System.out.println(vv.size()); //0
差集操作
System.out.println("-----容器的差集操作-----");
ArrayList<String> a1 = new ArrayList<>();
a1.add("a");
a1.add("b");
a1.add("c");
ArrayList<String> aa1 = new ArrayList<>();
aa1.add("b");
aa1.add("c");
aa1.add("d");
//根据求差顺序不同,差集的结果不同
//求两个集合的差集:a1-aa1
System.out.println(a1.removeAll(aa1)); //true
for (String d1:a1){
System.out.println(d1); //a
}
//求两个结合的差集:aa1-a1
System.out.println(aa1.removeAll(a1)); //false
for (String h1:aa1){
System.out.println(h1); //b c d
}