List类使用

基本操作

//声明集合
List<String> names = List.of("a", "b", "c"); //[a, b, c]

of等静态方法声明的集合对象是不可修改的(包括添加和删除),如果想要更改集合中元素,可以将集合传递到构造器中。

//声明
var names2 = new ArrayList<>(List.of("a", "b", "c"));
System.out.println(names2);//[a, b, c]
//修改
names2.set(2, "d");
System.out.println(names2);//[a, b, d],修改List元素成功
//添加
names2.add(2, "e");//[a, b, e, d]

Arrays.asList

返回一个可更改但是大小不可变的列表。即可以在此列表上调用set,但是不能使用add或remove。

另外,类似方法还有Collections.emptySet和Collections.singleton。

ArrayList

简介

ArrayLIst是一个其容量可以动态增长的动态数组,继承了AbstractList,实现了List、RandomAccess, Cloneable, java.io.Serializable。
ArrayList的操作不是线性安全的,一般在单线程中使用。多线程中一般使用Vector或者CopyOnWriteArrayList。

ArrayList遍历方式

1.迭代器遍历

Iterator<Integer> it = arrayList.iterator();
while(it.hasNext()){
    System.out.print(it.next() + " ");
}

2.索引值遍历

for(int i = 0; i < arrayList.size(); i++){
   System.out.print(arrayList.get(i) + " ");
}

3.for循环遍历

for(Integer number : arrayList){
   System.out.print(number + " ");
}

遍历效率排序:索引值遍历>for循环遍历>迭代器遍历。

toArray()的使用

toArray()返回的是Object[]数组,将Object[]转换为其他类型时,会报类转换异常。因此一般使用方法如下:

<T> T[] toArray(T[] a)

示例:

// toArray用法
 // 第一种方式(最常用)
 Integer[] integer = arrayList.toArray(new Integer[0]);

 // 第二种方式(容易理解)
 Integer[] integer1 = new Integer[arrayList.size()];
 arrayList.toArray(integer1);

 // 抛出异常,java不支持向下转型
 //Integer[] integer2 = new Integer[arrayList.size()];
 //integer2 = arrayList.toArray();

LinkedList

简介

  • LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
  • LinkedList实现List接口,能进行队列操作。
  • LinkedList实现Deque接口,即能将LinkedList当做双端队列使用。
  • ArrayList底层是由数组支持,而LinkedList是由双向链表实现的。

LinkedList遍历方式

1.迭代器遍历

Iterator<Integer> iterator = linkedList.iterator();
while(iterator.hasNext()){
    iterator.next();
}

2.for循环遍历

for(int i = 0; i < linkedList.size(); i++){
    linkedList.get(i);
}

3.Foreach遍历

for(Integer i : linkedList);

4.通过pollFirst()或pollLast()遍历

while(linkedList.size() != 0){
    linkedList.pollFirst();
}

5.通过removeFirst()或removeLast()遍历

while(linkedList.size() != 0){
    linkedList.removeFirst();
}

注:使用pollFirst()或pollLast()或removeFirst()或removeLast()遍历时,会删除原始数据。

LinkedList和ArrayList比较

  • LinkedList中插入元素很快,而ArrayList中插入元素很慢
  • LinkedList中随机访问很慢,而ArrayList中随机访问很快
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值