Java集合类分析List(二)

在这里插入图片描述

List的方法

List中允许添加null,用get方法取值,是不是值是不是null并不影响

构造:

除了使用ArrayList和LinkedList,还可以通过List接口提供的of()方法,根据给定元素快速创建List:

List<Integer> list = List.of(1, 2, 5);

添加:

list.add(1, "nxj");
    // 在列表的指定位置插入指定元素

删除:

public E remove(int index) 
    // 移除列表中指定位置的元素
protected void removeRange(int fromIndex, int toIndex)
    //删除区段内元素

查询:

list.get(0);
    	// 返回列表中指定位置的元素
list.indexOf("lwc");
    	// 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1
list.lastIndexOf("lwc");
    	// 返回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1
list.subList(1, 2);
    	// 返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图

修改:

list.set(0, "lp");
    // 用指定元素替换列表中指定位置的元素

在List中最常用的两个类就数ArrayList和LinkedList。他们两个的实现代表着数据结构中的两种典型:线性表和链表。在这里,这个线性表是可以根据需要自动增长的。Java的库里面默认没有实现单链表,LinkedList实际上是一个双链表。

ArrayList实现类

ArrayList是内部基于数组的线性表实现;方法如上

LinkedList实现类

LinkedList 同时实现了List< E >和Deque< E >两个接口,而Deque接口扩展自Queue,所以也满足先进先出的队列特性。此外,LinkedList还提供了栈的特性。
我们在使用的时候,总是用特定的接口来引用它,这是因为持有接口说明代码的抽象层次更高,而且接口本身定义的方法代表了特定的用途。

// 这是一个List:
List<String> list = new LinkedList<>();
// 这是一个Queue:
Queue<String> queue = new LinkedList<>();
//这是一个Stack
Deque<String> stack = new LinkedList<>();


//List、Queue、Deque是接口,LinkedList是具体实现类;LinkedList实现了多个接口!!!

// 不推荐的写法:
LinkedList<String> d1 = new LinkedList<>();

因为面向抽象编程的一个原则就是:尽量持有接口,而不是具体的实现类。

添加:
addFirst(E e)
addLast(E e)
删除:
removeFirst()
removeLast()
用LinkedList\Deque实现栈
Deque<String> stack = new LinkedList<>();
stack.push(E)     //把元素压栈
E=stack.pop()     //把栈顶的元素“弹出”
E=stack.peek()    //取栈顶元素但不弹出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值