ArrayList的应用
1. ArrayList的特点
集合中的List是一种有序的,可重复的集合,ArrayList是基于可动态扩展的数组实现了List的接口。因为是数组所以可以通过下标来访问集合中的元素,对随机访问有很高的效率。但在两个元素之间新增元素或删除元素则效率较低。
2.ArrayList的主要方法
- 创建ArrayList对象
List<String> list = new ArrayList<>();
注:List中的String代表List中的元素类型是String
- add(E e)方法向List中添加元素, E是泛型
- add(int index, E e)方法向List指定位置插入元素
- get(int index)获取指定位置的元素
- boolean contains(Object o)检查List中是否包含指定元素,包含返回true, 否则返回false
- size()方法返回List中元素的数量
- clear()清空List,删除所有元素
- isEmpty()检查List是否为空,为空返回true,否则返回false。
- indexOf(Object o)获取元素在List中的位置,元素不存在时返回-1。
package collect;
import java.util.ArrayList;
import java.util.List;
/**
* [简要描述]: ArrayList的主要方法
* [详细描述]:
*
* @author Smalight Lv
* @version 1.0, 2021/5/3 07:53
* @since JDK 1.8
*/
public class ArrayListTest {
public static void main(String[] args) {
/*
* 声明List变量,并创建一个ArrayList对象
* List<String>中的String代表List中的元素是String类的对象
*/
List<String> list = new ArrayList<>();
//添加元素,把参数添加到List中
list.add("刘备");
list.add("关羽");
list.add("张飞");
System.out.println("List的大小是:" + list.size());
System.out.println(list);
String str = list.get(0);
System.out.println("第0个元素是:" + str);
int index = list.indexOf("张飞");
System.out.println("张飞的位置:" + index);
//将元素"诸葛亮"添加到下标为1的位置(下标从零开始)
list.add(1, "诸葛亮");
System.out.println("List的大小是:" + list.size());
System.out.println(list);
boolean contains = list.contains("诸葛亮");
System.out.println("是否包含\"诸葛亮\":" + contains);
contains = list.contains("曹操");
System.out.println("是否包含\"曹操\":" + contains);
//按位置删除元素
list.remove(1);
System.out.println("List的大小是:" + list.size());
System.out.println(list);
//按元素值删除元素
list.remove("张飞");
System.out.println("List的大小是:" + list.size());
System.out.println(list);
boolean isEmpty = list.isEmpty();
System.out.println("List是否为空:" + isEmpty);
//清空List
list.clear();
System.out.println("List的大小是:" + list.size());
System.out.println(list);
isEmpty = list.isEmpty();
System.out.println("List是否为空:" + isEmpty);
}
}
运行结果:
List的大小是:3
[刘备, 关羽, 张飞]
第0个元素是:刘备
张飞的位置:2
List的大小是:4
[刘备, 诸葛亮, 关羽, 张飞]
是否包含"诸葛亮":true
是否包含"曹操":false
List的大小是:3
[刘备, 关羽, 张飞]
List的大小是:2
[刘备, 关羽]
List是否为空:false
List的大小是:0
[]
List是否为空:true
3.ArrayList的遍历
编历是指将集合中的所有元素都访问一遍。
3.1 使用for循环遍历
package collect;
import java.util.ArrayList;
import java.util.List;
/**
* [简要描述]:ArrayList遍历
* [详细描述]:
*
* @author Smalight Lv
* @version 1.0, 2021/5/4 10:29
* @since JDK 1.8
*/
public class ArrayListTraversal {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("刘备");
list.add("关羽");
list.add("张飞");
for(int i = 0; i < list.size(); i++){
String str = list.get(i);
System.out.println(str);
}
}
}
运行结果:
刘备
关羽
张飞
3.2 使用增强的for循环遍历
package collect;
import java.util.ArrayList;
import java.util.List;
/**
* [简要描述]:增加for循环遍历ArrayList
* [详细描述]:
*
* @author Smalight Lv
* @version 1.0, 2021/5/4 10:39
* @since JDK 1.8
*/
public class ArrayListT2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("刘备");
list.add("关羽");
list.add("张飞");
for (String item:list) {
System.out.println(item);
}
}
}
运行结果:
刘备
关羽
张飞
3.3 使用迭代器(Integor)遍历
package collect;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* [简要描述]:使用迭代器遍历ArrayList
* [详细描述]:
*
* @author Smalight Lv
* @version 1.0, 2021/5/4 10:44
* @since JDK 1.8
*/
public class ArrayListT3 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("刘备");
list.add("关羽");
list.add("张飞");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String str = iterator.next();
System.out.println(str);
}
}
}
运行结果:
刘备
关羽
张飞