ArrayList常用方法总结

1.集合框架概述

  • 集合又称为容器,用于存储、提取、删除数据。JDK提供的集合API都包含在 java.util 包内。
  • 集合框架两大分支:Collection接口和Map接口
  • 下面是Collection集合和Map集合的示意图

在这里有ArrayList和Vector直接实现了List接口;HashSet和LinkedHashSet直接实现了Set接口

HashMap和LinkedHashMap直接实现了Map接口

2.ArrayList中常用的方法总结

  • ①add(Object element) :向列表的尾部添加指定的元素,该方法一次只能添加一个元素
package list;
import java.util.ArrayList;
public class Test {
    public static void main(String[] args) {
        ArrayList list=new ArrayList<>();
        list.add("Tom");
    }
}
  • ②size() :返回列表中的元素个数
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList list=new ArrayList<>();
		list.add("Tom");
		list.add("Jim");
		int length=list.size();
		System.out.println(length);
	}
}

上述代码的运行结果为2,即此时返回列表中的元素个数为两个

  • ③get(int index) :获取指定索引(从0开始)位置的元素
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList list=new ArrayList<>();
		list.add("Tom");
		list.add("Jim");
		System.out.println(list.get(1));
	}
}

此时代码的运行结果为:“Jim”,此时的get(index):Object java.util.ArrayList.get(int index)

  • ④clear() :从列表中移除所有元素,即为清空list集合中的所有元素
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList list=new ArrayList<>();
		list.add("Tom");
		list.add("Jim");
		list.clear();
		int length=list.size();
		System.out.println(length);
	}
}

此时上述代码的运行结果为0;

  • ⑤isEmpty()  判断列表是否包含元素,不包含元素则返回 true,否则返回false
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		System.out.println(list.isEmpty());
		list.clear();
		System.out.println(list.isEmpty());
	}
}

此时运行结果为输出:

  • ⑥remove(int  index) :删除指定索引(从0开始)位置的元素,并将元素返回,后面位置的元素前移
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		System.out.println(list.remove(0));
		System.out.println(list.get(0));
	}
}

此时前后两次的输出结果分别是“Tom”和“Jim”

  • ⑦remove(Object o):删除list集合中的元素,返回boolean,若删除成功为true,否则为false;并将后面元素前移
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		System.out.println(list.remove("Tom"));
		System.out.println(list.get(0));
	}
}

此时的运行结果:

  • ⑧add(int index, Object element)  在指定位置添加元素,并将原来位置的元素后移
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		list.add(0, "White");
		System.out.println(list.get(0));
		System.out.println(list.get(2));
	}
}

此时可以得到的结果为:

  • ⑨set(int i, Object element) 将索引i位置元素替换为元素element并返回被替换的元素,即为替换指定位置的元素
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		list.set(0, "White");
		System.out.println(list.get(0));
	}
}

此时得到的运行结果即为“White”

  • ⑩iterator()  返回按适当顺序在列表的元素上进行迭代的迭代器
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		Iterator<String> iterator=list.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

在这里,第七行代码Iterator<String> iterator=list.iterator();是将list集合中的元素转到iterator变量中,while判断语句中,是判断当前“指针”下面是否还有元素,如果指针下面有元素,则移动指针并获取相应位置的元素。

  • 补充说明一点:

集合也可以像数组一样遍历,因为集合的底层代码是数组,下面我们先来看一段代码:

package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		for (int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}
		for(String name: list) {
			System.out.println(name);
		}
	}
}

此时的运行结果为:

  • 11.contains(Object o):即为用来判断集合容器中是否含有参数元素,如果列表包含指定的元素,则返回 true,否则为false
package list;
import java.util.ArrayList;
public class Test {
	public static void main(String[] args) {
		ArrayList<String> list=new ArrayList<String>();
		list.add("Tom");
		list.add("Jim");
		boolean flag = list.contains("Jim");
		System.out.println(flag);
	}
}

思考:判断过程是什么?真正执行的ArrayListcontains方法,该方法源码如下:

public boolean contains(Object o) {
        return indexOf(o) >= 0;
}
public int indexOf(Object o) {
    if (o == null) {
    for (int i = 0; i < size; i++)
        if (elementData[i]==null)
        return i;
    }else{
        for (int i = 0; i < size; i++)
                if (o.equals(elementData[i]))
                    return i;
    }
    return -1;
}

由该源码我们不难看出,此时的o为我们传入的String类型的“Jim”,在o前面又有一个Object修饰,我们由此可以知道,此时的o为一个上转型对象,里面放的是“Jim”,在执行后面代码的时候,此时的if (o.equals(elementData[i]))这里就是一个多态,表面上调用的是父类Object,实质上是调用的String类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值