Java List的ArrayList的方法的解释加理解(附代码)

ArrayList:使用的是数组结构,对于增加删除慢,查找快。

//无参构造方法 创建一个长度为0的数组,要第一次传进去数据的时候才会改为10的长度。每次动态扩容的时候都是扩大为原来的1.5倍。

ArrayList<类型> data = new ArrayList<>();

data.add(100); //add返回的一一定是true。

有三种构造方法,其他两个见API。

一些方法的实现:

//无参构造
ArrayList<String> data = new ArrayList<>();
//有参构造 拥有五个长度的列表,当元素超出长度时,会自动扩容。(我们不需进行操作)
ArrayList<String> dataNew = new ArrayList<>(5);
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素(从下标0开始的)
data.add(1,"new");
dataNew.add("21");
dataNew.add("32");
//可以添加重复的元素
dataNew.add("21");
//指定dataNew列表的第三个元素,data列表全部元素加入到指定位置,然后顺序往后。
dataNew.addAll(2,data);
//返回此列表中的元素总数
System.out.println(data.size());    // 4
System.out.println(dataNew.size()); // 7

将列表data的所有元素加入到dataNew(Collection<? extends E> c)列表的尾后。

dataNew.addAll(data);

返回列表的所有元素 clone()方法:

System.out.println(dataNew.clone());

上面一行代码返回的是上面所有加入dataNew列表的所有元素(类型均为String类型)。元素结果如下:[21, 32, 123, new, ming, 2021, 21, 123, new, ming, 2021]。此结果也证明了上面的添加元素的准确。

删除所有元素:data.clear();

查询元素是否在列表中,contains(Object o)方法返回true或false:

ArrayList<String> data = new ArrayList<>();
data.add("123");
data.add("ming");
data.add("2021");
System.out.println(data.contains("123"));

返回true
当不为字符串或者是其他结果时都将是false。

第二种方式,以下标元素进行查找get(int index)方法:

ArrayList<String> data = new ArrayList<>();
data.add("123");
data.add("ming");
data.add("2021");
data.add(1,"new");
System.out.println(data.get(3));//下标索引

结果为:2021

第三种方式,indexOf(Object o)方法,如果列表中存在则返回该元素下标索引,若不存在则返回-1.

//无参构造
ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
System.out.println(data.indexOf(3));
System.out.println(data.indexOf("new"));

结果:
-1
1

查找一个元素最后出现的索引,如果没有该元素则返回-1:int lastIndexOf(Object o)

判断列表是否为空则可以使用isEmpty()方法,如果列表不为空则返回false,如果为空则返回true:

//无参构造
ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
System.out.println(data.isEmpty());

删除一个指定的元素使用remove方法:E remove(int index)或boolean remove(Obejct o)可以以下标索引删除元素,也可以元素值删除。两者都可用。

ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
data.remove("new");
data.remove(1);
System.out.println(data.clone());

结果为:[123, 2021]。

删除一个指定的列表所有元素,使用 boolean removeAll(Collection<?> c):

//有参构造 拥有五个长度的列表,当元素超出长度时,会自动扩容。(我们不需进行操作)
ArrayList<String> dataNew = new ArrayList<>(5);
//无参构造
ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
dataNew.add("21");
dataNew.add("32");
//可以添加重复的元素
dataNew.add("21");
System.out.println(data.clone());
System.out.println(dataNew.clone());
data.addAll(1,dataNew);
System.out.println(data.clone());
data.removeAll(dataNew);
System.out.println(data.clone());

删除一个列表中指定范围的元素使用void removeRange(int fromIndex, int toIndex)

retainAll(Collection<?> c)保留列表中指定的列表元素,其他元素均被删除:

//有参构造 拥有五个长度的列表,当元素超出长度时,会自动扩容。(我们不需进行操作)
ArrayList<String> dataNew = new ArrayList<>(5);
//无参构造
ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
dataNew.add("21");
dataNew.add("32");
//可以添加重复的元素
dataNew.add("21");
data.addAll(2,dataNew);
data.retainAll(dataNew);
System.out.println(data.clone());

结果:[21, 32, 21]

按索引更改元素:set(int index,Object o):

//无参构造
ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
data.set(2,"happy");
System.out.println(data.clone());

int size()返回列表的元素总数:

data.set();

subList(int indexFrom,int indexTo)查看indexFrom(包括)到indexTo(不包括)之间的元素:

ArrayList<String> data = new ArrayList<>();
//添加三个元素,都是添加到列表的尾部,依次有序添加。
data.add("123");
data.add("ming");
data.add("2021");
//在第二个位置添加一个元素,从下标0开始的
data.add(1,"new");
data.set(2,"happy");
System.out.println(data.subList(1,2));

结果:[new]

可以使用trimTosize()调整列表实例的容量为当前的大小,最小化了ArrayList实例的存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kepnosian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值