ArrayList 与 LinkedList 的方法及其区别

  • E pop() 从此列表表示的堆栈中弹出一个元素

测试代码:

public class LinkedListTest {

public static void main(String[] args) {

LinkedList list = new LinkedList();

// boolean add(E e) 将指定的元素追加到此列表的末尾。

list.add(“aaa”);

list.add(“ddd”);

list.add(“ccc”);

list.add(“111”);

list.add(“aaa”);

list.add(“eee”);

// int size() 返回此列表中的元素数

System.out.println(list.size()); // 6

System.out.println(list); // [aaa, ddd, ccc, 111, aaa, eee]

// E get(int index) 返回此列表中指定位置的元素。

System.out.println(list.get(0)); // aaa

System.out.println(list.get(list.size() - 1)); // eee

System.out.println(“*****************************”);

// E remove(int index) 删除该列表中指定位置的元素

System.out.println(list.remove(3)); // 111

System.out.println(“*****************************”);

// void addFirst(E e) 在该列表开头插入指定的元素

list.addFirst(“111”);

System.out.println(list); // [111, aaa, ddd, ccc, aaa, eee]

// void addLast(E e) 将指定的元素追加到此列表的末尾。

list.addLast(“666”);

System.out.println(list); // [111, aaa, ddd, ccc, aaa, eee, 666]

// E getFirst() 返回此列表中的第一个元素

System.out.println(list.getFirst()); // 111

// E getLast() 返回此列表中的最后一个元素。

System.out.println(list.getLast()); // 666

System.out.println(“*****************************”);

// void push(E e) 将元素推送到由此列表表示的堆栈上

list.push(“888”);

System.out.println(list); // [888, 111, aaa, ddd, ccc, aaa, eee, 666]

// E pop() 从此列表表示的堆栈中弹出一个元素

String pop = list.pop();

System.out.println(pop); // 888

System.out.println(“****************************”);

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

System.out.println(“****************************”);

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

}

}

测试结果:

6

[aaa, ddd, ccc, 111, aaa, eee]

aaa

eee


111


[111, aaa, ddd, ccc, aaa, eee]

[111, aaa, ddd, ccc, aaa, eee, 666]

111

666


[888, 111, aaa, ddd, ccc, aaa, eee, 666]

888


111

aaa

ddd

ccc

aaa

eee

666


111

aaa

ddd

ccc

aaa

eee

666

二、聊聊 ArrayList


1. ArrayList 的底层源码

public class ArrayList extends AbstractList

implements List, RandomAccess, Cloneable, java.io.Serializable

ArrayList 是从JDK1.2 引入的。

它是可调整大小的数组,实现了List接口。 实现所有可选列表操作,并允许所有元素包括null 。 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。 (这个类是大致相当于Vector,不同之处在于它是不同步的)。

内部封装一个数组,用数组来存储数据。内部数组的默认初始容量 10,存满后 1.5 倍增长

从 JDK1.8开始, ArrayList 一开始创建一个长度为 0 的数组,当添加第一个元素时再创建一个始容量为 10 的 数组。

2. ArrayList 的构造方法

  • ArrayList() 构造一个初始容量为十的空列表。
  • ArrayList(Collection<? extends E> c) 构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
  • ArrayList(int initialCapacity) 构造具有指定初始容量的空列表。

3. ArrayList 的常用方法

ArrayList 的方法和 LinkedList 相同,但它没有两端操作数据的方法

  • boolean add(E e) 将指定的元素追加到此列表的末尾
  • int size() 返回此列表中的元素个数
  • E get(int index) 返回此列表中指定位置的元素
  • E remove(int index) 删除该列表中指定位置的元素
  • boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)
  • boolean contains(Object o) 如果此列表包含指定的元素,则返回 true
  • boolean addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到此列表中,从指定的位置开始
\- void clear() 从列表中删除所有元素
  • for / iterator 集合遍历

测试代码:

public class ArrayListTest {

public static void main(String[] args) {

ArrayList list = new ArrayList();

// boolean add(E e) 将指定的元素追加到此列表的末尾

list.add(111);

list.add(666);

list.add(333);

list.add(888);

list.add(111);

list.add(999);

// int size() 返回此列表中的元素个数

System.out.println(list.size()); // 6

System.out.println(list); // [111, 666, 333, 888, 111, 999]

// E get(int index) 返回此列表中指定位置的元素

System.out.println(list.get(3)); // 888

// E remove(int index) 删除该列表中指定位置的元素。

list.remove(3);

System.out.println(list); // [111, 666, 333, 111, 999]

// boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)

System.out.println(list.remove(Integer.valueOf(111))); // true

System.out.println(list); // [666, 333, 111, 999]

System.out.println(“******************************”);

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

// 用三种方式遍历集合

System.out.println(“******************************”);

Iterator it = list.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

System.out.println(“******************************”);

for (Integer integer : list) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值