ArrayList类是List接口的实现类。
我们来看一些ArrayList类中的一些方法操作以及与其相关的一些操作。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
//无参构造方法,创建了一个长度为0的数组
/*
* 有参数的构造方法,指定了初始大小
* 本质上就是创建了一个参数大小的数组
*/
ArrayList list = new ArrayList();
//1.添加元素
/*
* add:
* 1.先将底层数组扩容
* 2.将元素赋值到数组对应位置
* 3.返回true
*/
list.add(10);
list.add("abc");
list.add(0,12);
//获取元素
System.out.println(list.get(1));
//修改元素
/*
* 返回值为 修改之前的值
*/
Object e = list.set(0,"first");
System.out.println(list.get(0));
System.out.println(e);
//删除元素
//按照下标删除,返回值为删除的元素
//只会删除遇到的第一个元素
/*
* 如果remove的参数为int,则按照下标删除
* 参数为Integer,则按照元素删除
*/
Object element = list.remove(2);
//按照元素删除,返回的是布尔值
Object element1 = list.remove(new Integer(12));
System.out.println(list.get(0));
System.out.println(element);
System.out.println(element1);
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
10
first
12
first
abc
false
Process finished with exit code 0
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
//1.8版本之后泛型后面的尖括号不用加类型
ArrayList list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
//size() 获取元素的个数
System.out.println("size = " +list.size());
//遍历
for(int i = 0;i iterator = list.iterator();
while(iterator.hasNext()) {
String e = iterator.next();
//删除当前迭代到的对象
//通过迭代器删除元素,不会影响整个遍历过程
iterator.remove();
System.out.print(e +" ");
}
System.out.println();
System.out.println("size = " +list.size());
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
size = 4
aa bb cc dd
aa bb cc dd
aa bb cc dd
size = 0
Process finished with exit code 0
在上述中我们出现了一个迭代器的概念,我们对其进行一个说明:迭代器我们可以将其看作为一个游标,我们对其进行一次迭代,便是游标向下指一次。
其中迭代器中常用用的方法有三种:next(),hasnext(),romove()
Iterator迭代器中的三个常用的方法
1).hasnext()
判断下一个值存不存在。
2).naxt()
将迭代器指针移动到当前位置的下一个值
3).remove()
删除迭代到的当前对象
list中独有的迭代器是一个双向的迭代器,不仅仅只是能从前往后遍历,也可以从后往前遍历。
//上述中的迭代器只能从上往下找,而List中独有的迭代器还可以从下往上找
ListIterator listIterator = list.listIterator();
//从上往下打印
while(listIterator.hasNext()) {
System.out.print(listIterator.next() +" ");
}
//从下往上打印
System.out.println();
System.out.println("---------------");
while(listIterator.hasPrevious()) {
System.out.print(listIterator.previous() +" ");
}
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList list_1 = new ArrayList();
list_1.add("aa");
list_1.add("bb");
list_1.add("bb");
list_1.add("cc");
list_1.add("dd");
list_1.add("ee");
//根据元素获取下标,第一次出现时的下标
//-1,该元素不存在
int index = list_1.indexOf("bb");
System.out.println(index);
//最后一次出现的下标
System.out.println(list_1.lastIndexOf("bb"));
//判断是否包含某个元素
System.out.println(list_1.contains("aa"));
//删除集合中所有元素
// list_1.clear();
//将集合变为一个数组
System.out.println(Arrays.toString(list_1.toArray()));
//是否为空,true没有元素,false有元素
System.out.println(list_1.isEmpty());
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
1
2
true
[aa, bb, bb, cc, dd, ee]
false
Process finished with exit code 0
import java.io.StringWriter;
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList list_1 = new ArrayList();
list_1.add("aa");
list_1.add("bb");
list_1.add("bb");
list_1.add("cc");
list_1.add("dd");
list_1.add("ee");
ArrayList list_2 = new ArrayList();
list_2.add("aa");
list_2.add("bb");
list_2.add("bb");
list_2.add("cc");
list_2.add("ff");
list_2.add("gg");
//子集
List list = list_1.subList(1,3);
System.out.println(list.toString());
// //合集 将参数集合中所有的元素添加到调用方法的集合中
// list_1.addAll(list_2);
// System.out.println(list_1);
list_1.addAll(index,c)
//
// //差集 将List_1中List_1和List_2的交集删除
// list_1.removeAll(list_2);
// System.out.println(list_1);
//交集
list_1.retainAll(list_2);
System.out.println(list_1);
//拷贝集合
ArrayList temp = new ArrayList<>(list_1);
System.out.println(temp);
//数组和集合的转换
Object[] array = list_1.toArray();
for(Object o : array) {
System.out.print(o +" ");
}
System.out.println();
System.out.println("---------------");
String[] arr = new String[list_1.size()];
list_1.toArray(arr);
for(String str : arr) {
System.out.print(str +" ");
}
System.out.println();
int[] array_int = {1,2,3};
/*
* asList:如果参数为基本数据类型数组,
* 则将整个数组作为集合的一个元素
* 如果是对象类型的数组,将数组中的元素转换到集合中
*/
List list1 = Arrays.asList(array_int);
Integer[] array_integer = {1,2,3};
List list2 = Arrays.asList(array_integer);
System.out.println(list1);
System.out.println(list2);
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
[bb, bb]
[aa, bb, bb, cc]
[aa, bb, bb, cc]
aa bb bb cc
---------------
aa bb bb cc
[[I@4554617c]
[1, 2, 3]
Process finished with exit code 0
OK ! 完成,上述中的ArrayList是比较详细的。如有疑问,评论,留言。