java集合框架之List集合

数组和集合的区别:
数组:长度不可变
集合:长度可变

Conllection是集合框架的父接口
他的子接口有List和Set集合,均为接口
下图所表示的是Collection的集合框架的继承体系
在这里插入图片描述
今天主要分享List集合:List集合是有序的单列可重复的集合,其中两个常见的实现类是ArrayList和LinkedList

ArrayList:底层实现是用的数组,有下标;查询快,但是增删数据比较慢
LinkedList:底层实现是用的双向链表,没有下标;查询慢,但是增删数据比较快

List集合常用方法

1. 添加数据:boolean add(E e)

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		System.out.println(list);//打印结果:[hello, java]

创建对象时集合是允许我们通过尖括号来规定存储数据的类型,但是只能是引用数据类型;这个就是泛型

2.返回集合的长度:int size()

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		System.out.println(list.size());//打印结果:2

因为我们只通过add方法添加了两个数据进去,所以长度为2

长度方法的比较:数组:length 字符串:length() 集合:size()

3.获取元素:E get(int index)

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		System.out.println(list.get(0));//打印结果:hello

上述方法是通过索引来获取指定的元素,索引是从0开始的

4.删除元素:E remove(int index)

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		System.out.println(list.remove(0));//打印结果:hello
		System.out.println(list);//删除后打印结果:[java]

删除元素的方法一样是通过索引删除指定元素,并吧被删除的元素返回回来

4.插入元素:boolean add(int index,E e)

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		list.add("world");
		System.out.println(list);//打印结果:[hello, java, world]
		//向指定位置插入数据
		list.add(1, "insert");
		System.out.println(list);//打印结果:[hello, insert, java, world]

插入数据使用的是add的重载方法,在指定的索引处插入数据,指定索引处之后的数据会往后移动一个索引的位置
注意:插入时,给出的索引大小不要超过最大数据元素个数-1的大小哟,不然会报出下标越界异常

5.更改数据:E set(int index,E e)

		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("java");
		list.add("world");
		//更改指定位置的数据
		System.out.println(list.set(1, "set"));//打印结果:java
		System.out.println(list);//打印结果:[hello, set, world]

上述是更改指定索引处的数据,更改后,会把被更改的数据返回回来
注意:使用时依然要注意下标不要越界哟

上述为List集合中的一些常见方法,对于ArrayList和LinkedList集合都适用

下面讲的为LinkedList集合中的一些方法
因为LinkedList集合底层是双向链表,所以就有一些方法可以获取到节点

1.获取头节点
E getFirst()
E element()

		LinkedList<Integer> list = new LinkedList<Integer>();
		list.add(12);
		list.add(24);
		list.add(34);
		System.out.println(list.getFirst());//打印结果为:12
		System.out.println(list.element());//打印结果为:12

上述两种方法均可获取到头结点,其中element中就是返回的getFirst中所判断的,所以element相当于getFirst
注意:使用时,集合中一定要有元素哟,不然会报NoSuchElementException的异常哟

2.获取尾节点
E getLast()

		LinkedList<Integer> list = new LinkedList<Integer>();
		list.add(12);
		list.add(24);
		list.add(34);
		System.out.println(list.getLast());//打印结果为:34

通过getLast我们就可以获取到尾节点了,但是一样要注意集合中是有元素的,不然会报NoSuchElementException的异常哟

3.删除并获取头节点
E poll()
E remove()

		LinkedList<Integer> list = new LinkedList<Integer>();
		list.add(12);
		list.add(24);
		list.add(34);
		System.out.println(list.remove());//打印结果为:12
		//调用poll方法进行删除
		System.out.println(list.poll());//打印结果为:24

先调用remove方法删除头节点12;删除后,头节点就成了24;当我们使用poll再次删除时,就吧24给删除了

注意:对于remove来说,当集合中没有元素时,进行删除操作会报NoSuchElementException的异常;但是对于poll来说,当集合中没有元素时,不会报错,只会返回null

今天的分享就到这里了,如果有错误的地方欢迎大家来指点!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值