List接口

  • List接口继承自Collection接口,是单列集合的一个重要的分支,习惯性地会将实现了List接口的对象称为List集合
  • List集合:元素有序,可重复;所有的元素是以一种线性方式存储的,在程序中通过索引来访问集合中指定的元素

List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些操纵集合的特有方法

方法声明                                               功能描述void add(int index,Object element)              //将元素element插入List集合的指定索引位置
boolean addAll(int index,Collection c)           //将集合c包含的所有元素插入到List集合的指定索引的位置
Object get(int index)                           //返回集合索引index处的元素
Object remove(int index)                           //删除索引index处的元素
Object set(int index,Object element)            //将索引index处的元素替换成element,并将替换后的元素返回
int indexOf(Object o)                            //返回对象o在List集合中首次出现的位置索引
int LastIndexOf(Object o)                            //返回对象o在List集合中最后一次出现的位置索引
List subList(int fromIndex,int toIndex)       //返回从索引fromIndex(包括)到toIndex(不包括)处所有元素集合组成的子集合
Object[] toArray()                            //将集合元素转换为数组
default void sort(Comparator<? super E>c)  //根据指定的比较器规则对集合元素进行排序
ArrayList集合
  • ArrayList集合是List接口的一个实现类,它是程序中最常见的一种集合
  • ArrayList集合内部封装了一个长度可变的数组对象,因此ArrayList集合可以看作是一个长度可变的数组
  • ArrayList内部的数据存储结构是数组形式,在增加或删除指定位置的元素时**,会创建新的数组,效率比较低**,因此不适合做大量的增删操作,但数组可以通过索引的方式访问元素,因此ArrayList集合在遍历和查找元素时显得非常高效
package com.sgl;import java.util.ArrayList;public class Test {public static void main(String[] args) {//创建一个ArrayList集合ArrayList list = new ArrayList();//向集合中添加元素list.add("stu1");list.add("stu2");list.add("stu3");list.add("stu4");System.out.println("集合的长度:"+list.size());   //集合的长度:4System.out.println("第二个元素是:"+list.get(1));  //第二个元素是:stu2}
}

简述:

首先一个**”new ArrayList()“语句创建了一个空的ArrayList集合**,接着调用add(Object o)的方法向ArrayList集合中添加了4个元素,然后调用size()方法获取集合中元素的个数,最后通过调用ArrayList的get(int index)方法取出指定索引位置的元素

注意避免发生角标越界异常IndexOutOfBoundsException!!!!!!

LinkedList集合
  • LinkedList集合内部包含有两个Node类型的first和last属性维护一个双向的循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素
  • LinkedList集合在增删操作很高效

双向循环链表图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3ZIdfVV-1628227568006)(C:\Users\shiga\Pictures\Saved Pictures\QQ截图20210802182259.png)]

简述:左边图为新增一个元素,元素1和元素2在集合中彼此为前后关系,在他们中新增一个元素时,只需让元素1记住它后面的元素是新元素,让元素2记住它前面的元素为新元素;有图为删除一个元素,想要删除元素1和元素2之间的元素3,只需让元素1和元素2变成前后关系。

LinkedList集合除了从接口Collection和List中继承并实现了集合操作方法以外,还专门针对元素的增删操作定义了一些特有的方法:

void add(int index,E element)                //在此列表中指定的位置插入指定的元素
void addFirst(Object o)                   //将指定元素插入集合的开头
void addLast(Object o)                   //将指定元素插入集合的结尾
Object getFirst()                         //返回集合的第一个元素
Object getLast()                         //返回集合的最后一个元素
Object removeFirst()                      //移除并返回集合的第一个元素
Object removeLast()                        //移除并返回集合的最后一个元素
boolean offer(Object o)                    //将指定元素添加到集合的结尾
boolean offerFirst(Object o)                 //将指定元素添加到集合的开头
boolean offerLast(Object o)                   //将指定元素添加到集合的结尾
Object peek()                              //获取集合的第一个元素
Object peekFirst()                        //获取集合的第一个元素
Object peekLast()                        //获取集合的最后一个元素
Object poll()                          //移除并返回集合的第一个元素
Object pollFirst()                      //移除并返回集合的第一个元素
Object pollLast()                        //移除并返回集合的最后一个元素
void push()                             //将指定元素添加到集合的开头
Object pop()                          //移除并返回集合的第一个元素
package com.sgl;
import java.util.LinkedList;public class Test {public static void main(String[] args) {//创建一个LinkList集合LinkedList link = new LinkedList();//1.添加元素link.add("stu1");link.add("stu2");System.out.println(link);  //[stu1, stu2]link.offer("offer");  //向集合尾部添加元素link.push("push");   //向集合头部添加元素System.out.println(link);//[push, stu1, stu2, offer]//2.获取元素Object object = link.peek();System.out.println(object);//push//3.删除元素link.removeFirst();  //  删除集合第一个元素link.pollLast(); //删除集合最后一个元素System.out.println(link);//[stu1, stu2]}
}

List接口(ArrayList集合和LinkedList集合)相关推荐

  1. Map集合和List集合总结

    Map集合和List集合哪个效率更高 List接口 List集合是一个元素有序(存储有序).可重复的集合,集合中的每个元素都有对应的索引,以便于查询和修改,List集合是允许存储null值的. Lis ...

  2. 1-17 Set集合和Map集合

    Hash表 Hash,一般翻译做"散列",也有直接音译为"哈希"的,它是基于快速存取的角度设计的,也是一种典型的**"空间换时间"**的做法 ...

  3. Day_8/08(List集合和Set集合)

    目录 一.List集合 1.ArrayList集合 2.LinkedList集合 1.增加元素 2.查询元素 3.修改元素 4.删除元素 二.Set集合 1.HashSet集合 2.LinkedHas ...

  4. scala集合和java集合的转换-List

    scala集合和java集合的转换-List scala的List要想转换成java的list 需要导入对应的类scala.collection.JavaConverters._ import jav ...

  5. Java-Collection集合和Map集合总结

    本文欢迎转载,转载前请联系作者,经允许后方可转载.转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSD ...

  6. Set集合和List集合

    List:有序可重复          ArrayList: 写入数据时,数据在尾部的时候快,取数快 LinkedList:  集合中间部分添加值和删除值得时候快 Set:不包含重复元素,但是无序, ...

  7. Set集合和Collection集合

    1:Set集合(理解) (1)Set集合的特点无序,唯一 (2)HashSet集合(掌握)A:底层数据结构是哈希表(是一个元素为链表的数组)B:哈希表底层依赖两个方法:hashCode()和equal ...

  8. Collection集合和Map集合循环遍历三种方法

    Collection集合的四种遍历方式: 1.迭代器 public static void main(String[] args) {List<String> list = new Arr ...

  9. List集合和set集合

    List集合中的元素允许重复,各元素的顺序就是对象插入的顺序,类似于java数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素. List接口继承了Collection借口,因此包含了C ...

  10. Set集合和Map集合

    Set接口和Map接口 回顾 1 集合概念,用来存储一组数据的容器.和数组类似,数组是长度固定的,集合长度可以变化.数组能存储基本类型和引用类型,集合只能存储引用类型. 2 Collection接口, ...

最新文章

  1. 飞书在线文档 美誉度国内最佳!一起来围观~
  2. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
  3. 频率概率与贝叶斯概率
  4. 系统开发基础:UML中图的相关知识笔记(下)
  5. 安装perl5.10.0
  6. iOS 关于真机和模拟器framework合并
  7. Sublime Text 2 快捷键用法大全
  8. Windows下 ffmpeg + labelImg 提取视频帧 得到图片集 并 标注图片 来 构造数据集
  9. 【ubuntu操作系统入门】Ubuntu常用命令大全一
  10. android studio adb 连接mumu 模拟器
  11. Windows的cmd统计文件行数
  12. https证书过期时间应该怎么处理
  13. 小米扫地机器人换了边刷很响_米家/石头/小瓦扫扫地机器人为什么不使用双边刷而使用单边刷?...
  14. IPHONE黑解教程
  15. style计算机词汇,法语词汇学习:计算机及网络词汇(3)
  16. Python 练习实例100例—8
  17. lcs算法c语言代码,动态规划算法-LCS
  18. citus插件安装及使用
  19. 布隆过滤器原理很好懂
  20. 【随机过程】复合泊松过程的期望

热门文章

  1. Kuangbin专题八生成树
  2. 计算机网络 带宽_什么是带宽(计算机网络)?
  3. 鲲志说:向我跌宕起伏,喜忧参半的2022致敬!
  4. html5 实心圆点,html5如何使用canvas画空心圆与实心圆
  5. android 苹果备忘录,你会不会用苹果备忘录?白白放弃这么逆天的功能,不如换安卓机!...
  6. linux嵌入式计算器绪论,毕业设计—嵌入式计算器
  7. 服务器怒稳定进不了某个网址,登录服务器的一瞬间,让我感觉自己再也不是“菊外人”...
  8. VulnHub渗透测试实战靶场 - SICKOS: 1.1
  9. nividia-smi命令不显示占用显卡的进程
  10. 研究Google maps及51ditu的图片切割及存储方法