简介
ArrayList 是 java 集合框架中比较常用的数据结构了。继承自 AbstractList,实现了 List 接口。底层基于数组实现容量大小动态变化。允许 null 的存在。同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。
ArrayList
ArrayList
实现了RandomAccess
接口,表明ArrayList
支持随机访问。ArrayList
实现了Cloneable
接口,表明ArrayList
是可以clone的。ArrayList
实现了Serializable
接口,表明ArrayList
是支持序列化的。- 和
Vector
不同,ArrayList
不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector
或者CopyOnWriteArrayList
。 ArrayList
底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。
缺点:
1、插入和删除的效率比较低。
2、根据内容查找元素的效率较低。
ArrayList使用
构造
ArrayList有三种构造方式:无参构造、利用其他的collection构造、指定顺序表的初始容量。
1.1 无参构造
无参构造类型是推荐的写法。
//Integer为整型的包装类型
List<Integer> list = new ArrayList<>();
12
1.2 指定初始容量
List<Integer> list = new ArrayList<>(10);
list.add(1);
list.add(2);
list.add(3);
1234
1.3 利用其他的collection进行构造
//构建一个与list1元素一样的list
ArrayList<Integer> list2 = new ArrayList<>(list1);
12
注: 无论哪种构造形式,都应该避免省略类型,任意类型的元素都能够存放,使用时会带来很多麻烦。
基础操作
2.1 添加元素
添加元素到 ArrayList
可以使用 add()
方法:
public class Test{
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
sites.add("Hello");
sites.add("CSDN");
System.out.println(array);
}
}
2.2删除元素
删除元素使用remove()
方法:
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Hello");
array.add("CSDN");
array.add("IDEA");
array.add("Java");
System.out.println(array);
array.remove(2);
System.out.println(array);
}
}
2.3 修改元素
修改元素可以使用 set()
方法:
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Hello");
array.add("CSDN");
array.add("IDEA");
array.add("Java");
System.out.println(array);
array.set(2,"python"); // 第一个参数为索引,第二个参数为要修改的值
System.out.println(array);
}
}
2.4 访问元素
访问元素使用get()
方法:
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Hello");
array.add("CSDN");
array.add("IDEA");
array.add("Java");
System.out.println(array);
System.out.println(array.get(2)); // 获取位置2的元素
}
}
2.5 计算大小
计算数组内元素个数使用size()
方法:
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Hello");
array.add("CSDN");
array.add("IDEA");
array.add("Java");
System.out.println(array);
System.out.println(array.size());
}
}
2.6 遍历数组
遍历数组有三种方式:for循环遍历、for-each遍历、迭代器遍历。
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Hello");
array.add("CSDN");
array.add("IDEA");
array.add("Java");
System.out.println(array);
//for循环遍历
System.out.println("for:");
for (int i = 0; i < array.size(); i++) {
System.out.print(array.get(i)+" ");
}
System.out.println();
//for-each遍历
System.out.println("for-each:");
for (String j:array) {
System.out.print(j+" ");
}
System.out.println();
//迭代器遍历
System.out.println("迭代器:");
Iterator<String> it = array.listIterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
}
System.out.println();
}
常用操作
方法 | 作用 |
---|---|
void add(int index, E element) |
将element元素插入到index位置 |
boolean addAll(Collection<? extends E> c) |
将c中的元素全部插入 |
boolean remove(Object o) |
删除第一个遇到的o元素 |
void clear() |
清空 |
boolean contains(Object o) |
判断o是否在表中 |
int indexOf(Object o) |
返回第一个o所在的下标 |
int lastIndexOf(Object o) |
返回最后一个o的下标 |
List<E> subList(int fromIndex, int toIndex) |
截取fromindex到toindex的元素 |
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
ArrayList<String> array2 = new ArrayList<>();
//add插入元素
array.add("Hello");
array.add("CSDN");
array.add("Java");
array.add("IDEA");
array2.add("python");
array2.add("Java");
array.add(1,"Data");
System.out.println("array = " + array);
//addAll添加另一个ArrayList集合
array2.addAll(array);
System.out.println("array2 = " + array2);
//remove删除ArrayList中的指定元素
array2.remove("Data");
System.out.println("array2 = " + array2);
//清空ArrayList的所有元素
array.clear();
System.out.println("array = " + array);
//contains判断指定的元素是否存在与集合中
System.out.println("Java是否在表中:" + array2.contains("Java"));
//indexOf查询第一个元素的搜引(下标)
System.out.println("array2.indexOf(\"Java\") = " + array2.indexOf("Java"));
//lastIndexOf查询最后一个出现的元素搜引
System.out.println("array2.lastIndexOf(\"Java\") = " + array2.lastIndexOf("Java"));
//subList截取开始搜引到结束搜引的所有元素
System.out.println("array2.subList(1,4) = " + array2.subList(1,4));
}
标签:常用,ArrayList,System,add,println,array,方法,out
From: https://www.cnblogs.com/yhm050305/p/17871265.html