ArrayList方法总结
ArrayList 方法总结
- ArrayList继承关系
- ArrayList常见方法
- ArrayList全部方法简介
ArrayList继承关系
ArrayList继承了AbstractList,实现了List接口,底层实现是数组
ArrayList中的方法没有加 synchronized 关键字,线程并不安全
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{...}
ArrayList常见方法
add - 添加
// 实例arraylist
public static ArrayList<Integer> createIntegerArray() {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(9);
arrayList.add(6);
arrayList.add(4);
arrayList.add(7);
return arrayList;
}
public static ArrayList<String> createStringArray() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("a");
arrayList.add("bcd");
arrayList.add("hello");
arrayList.add("IZONKUN");
arrayList.add("world");
arrayList.add("a");
return arrayList;
}
// 源码方法:
public boolean add(E e) {
modCount++;
add(e, elementData, size);
return true;
}
// 简单好懂:有位置就在对应位置赋值,否则就扩容再赋值
private void add(E e, Object[] elementData, int s) {
if (s == elementData.length)
// grop() 扩容方法
elementData = grow();
elementData[s] = e;
size = s + 1;
}
get - 获得所给索引对应的值
// 输入参数:int num 用于在数组中寻找对应偏移量的值
public static void main(String[] args){
ArrayList<Integer> arrayList1 = createIntegerArray();
System.out.println(arrayList1.get(1));
System.out.println(arrayList1.get(100));
}
// 返回值 <E> ArrayList对应类型
9
NPE 空指针异常
// 源码方法:
public E get(int index) {
// 检查长度是否有异常
Objects.checkIndex(index, size);
return elementData(index);
}
// 检查长度是否有异常方法
public static <X extends RuntimeException>
int checkIndex(int index, int length,
BiFunction<String, List<Integer>, X> oobef) {
if (index < 0 || index >= length)
throw outOfBoundsCheckIndex(oobef, index, length);
return index;
}
// 返回对应值
E elementData(int index) {
return (E) elementData[index];
}
contains - 判断是否存在在对应arraylist中
// 输入参数:Object object 用于判断是否存在的对象
public static void main(String[] args){
ArrayList<Integer> arrayList1 = createIntegerArray();
System.out.println(arrayList1.contains(1));
System.out.println(arrayList1.contains(100));
}
// 返回值:boolean
true
false
// 源码方法:
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
return indexOfRange(o, 0, size);
}
int indexOfRange(Object o, int start, int end) {
Object[] es = elementData;
// 目标为空
if (o == null) {
for (int i = start; i < end; i++) {
if (es[i] == null) {
return i;
}
}
} else {
// 遍历返回第一次遇到目标的下标
for (int i = start; i < end; i++) {
if (o.equals(es[i])) {
return i;
}
}
}
return -1;
}
indexOf - 获得所给值对应的第一个索引
// 输入参数:Object object 用于判断是否存在的对象
public static void main(String[] args){
ArrayList<String> arrayList2 = createStringArray();
System.out.println(arrayList2.indexOf("wwww"));
System.out.println(arrayList2.indexOf("IZONKUN"));
}
// 返回值 int 返回对应值对应的第一个索引
-1
3
// 见上面的contains中的indexOf和indexOfRange
size - 获得arraylist长度
public static void main(String[] args){
ArrayList<String> arrayList2 = createStringArray();
System.out.println(arrayList2.size());
}
// 返回值 int 长度
6
// 源码方法:
public int size() {
return size;
}
isEmpty - 判断当前arraylist是否为空
public static void main(String[] args){
ArrayList<String> arrayList2 = createStringArray();
System.out.println(arrayList2.isEmpty());
}
// 返回值 boolean 为空返回true 不为空返回false
false
// 源码方法:
public boolean isEmpty() {
return size == 0;
}
forEach - 遍历arraylist
// 遍历数组,进行活动
public static void main(String[] args){
ArrayList<String> arrayList2 = createStringArray();
arrayList2.forEach((e)-> {
System.out.print(e+" ");
});
}
// 返回值
a bcd hello IZONKUN world a
// 源码方法:
// 传入参数:消费者行为
public void forEach(Consumer<? super E> action) {
// 判空异常
Objects.requireNonNull(action);
final int expectedModCount = modCount;
final Object[] es = elementData;
final int size = this.size;
for (int i = 0; modCount == expectedModCount && i < size; i++)
// 消费者方法执行
action.accept(elementAt(es, i));
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
// 判空异常方法:
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
ArrayList全部方法简介
方法 | 描述 |
---|---|
add() | 将元素插入到指定位置的arraylist中 |
addAll() | 添加集合中所有元素到arraylist中 |
clear() | 删除arraylist中所有元素 |
clone() | 复制一份arraylist |
contains() | 判断元素是否在arraylist中 |
get() | 通过索引值获取arraylist中的元素 |
indexOf() | 返回arraylist中元素的索引值 |
removeAll() | 删除存在于指定集合中的arraylist里的所有元素 |
remove() | 删除arraylist里的单个元素 |
size() | 返回arraylist里元素数量 |
isEmpty() | 判断arraylist是否为空 |
subList() | 截取部分arraylist的元素 |
set() | 替换arraylist中指定索引的元素 |
sort() | 对arraylist元素进行排序 |
toArray() | 将arraylist转换为数组 |
toString() | 将arraylist转换为字符串 |
ensureCapacity() | 设置指定容量大小的arraylist |
lastindexOf() | 返回指定元素在arraylist中最后一次出现的位置 |
retainAll() | 保留arraylist是否包含指定集合中的所有元素 |
containsAll() | 查看arraylist是否包含指定集合中的所有元素 |
trimToSize() | 将arraylist中的容量调整为数组中的元素个数 |
removeRange() | 删除arraylist中指定索引之间存在的元素 |
replaceAll() | 将给定的操作内容替换掉数组中每一个元素 |
removeIf() | 删除所有满足特定条件的arraylist元素 |
forEach() | 遍历arraylist中每一个元素并执行特定操作 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT蛋的个人博客!