首页 > 其他分享 >LinkedList集合

LinkedList集合

时间:2022-09-30 18:32:52浏览次数:73  
标签:LinkedList 队列 System println que 集合 out


一、java常见集合:

LinkedList集合_双向队列

LinkedList集合_出栈_02

编辑

二、LinkedList实现关系:

LinkedList集合_出栈_03


LinkedList集合_出栈_04

编辑

三、LinkedList造型为Queue:

3.1.简介:

LinkedList造型为Queue表示将LinkedList用作队列:

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。


队列类似于 人排队(先加入到队列中的元素 会先被取出)

3.2.常用 方法:

LinkedList集合_双向队列_05


LinkedList集合_出栈_06

编辑

推荐使用黄框内方法

队列提供的所有方法都以两种形式存在:

  • 一种是当操作失败时抛异常,
  • 另一种是返回一个null或者false(返回一个特定的值,取决于具体操作)。

案例:

public static void main(String[] args) {    
Queue<Integer> que = new LinkedList<Integer>();
//1.给队列que的末尾添加元素
que.offer(0);
que.offer(1);
que.offer(2);
System.out.println(que);//输出结果:[0, 1, 2]

//2.从que队列首部取出某个元素 (而不从队列中删除它)
System.out.println(que);//输出结果:[0, 1, 2]
int top = que.peek();
System.out.println("top=" + top);//输出结果:top=0
System.out.println(que);//输出结果:[0, 1, 2]

//3.从que队列首部取出某个元素 并从队列中删除它,(如果此队列为空,则返回null)
System.out.println(que);
int top = que.poll();
System.out.println("top = "+top);
System.out.println(que);
}

其它

add()、element()、remove()方法与offer()、peek()、poll()目的相同,但是仍有区别。

  • offer(),add() 区别:

一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。

  • poll(),remove() 区别:

remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

  • peek(),element()区别:

element() 和 peek() 是在队首取元素。与 remove() 类似,队列为空时 element() 会抛异常,而 peek会返回 null

四、LinkedList造型为Deque:

4.1.LinkedList造型为Deque,可以当做双端队列使用

Deque是double ended queue,将其理解成双端结束的队列,双端队列,队首和队尾都可以插入或删除元素。

public stataic void main(String[] args){    
Deque<Integer> deque = new LinkedList<Integer>();//定义
deque.addFirst(2); //在队列头部添加
deque.pollFirst(); //删除头部第一个元素(等价于poll())
deque.peekFirst(); //获取头部第一个元素(等价于peek())

deque.addLast(1); //在队列尾部添加(等价于add())
deque.pollLast(); //删除尾部第一个元素
deque.peekLast(); //获取尾部第一个元素
}

LinkedList集合_压栈_07


LinkedList集合_压栈_08

编辑

4.2.LinkedList造型为Deque,可以当做栈使用

Queue接口中还规定了栈的方法比如push()和pop()及peekFirst()和pollFirst() (Java官方推荐大家用LinkedList作为栈使用,不推荐Stack)

public stataic void main(String[] args){
Deque<Integer> stack=new LinkedList<>();
System.out.println("栈为空:"+stack.isEmpty()); //判断栈是否为空
stack.addFirst(12);//向栈中存入元素(压栈)
System.out.println("栈为空:"+stack.isEmpty()); //判断栈是否为空
System.out.println(stack.peekFirst()); //获取栈顶元素
System.out.println(stack.pollFirst()); //获取并移除栈顶元素
System.out.println("栈为空:"+stack.isEmpty()); //判断栈是否为空
//注意:压栈和出栈还可以调push和pop方法
//pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则发生NoSuchElementException
//push(): 向栈中压入元素,也就是向队头增加元素,等价于addFirst(),如果元素为null,则发生NPE,
//如果栈空间受到限制,push()会发生IllegalStateException

}

其他:

ArrayDeque: 基于数组实现的​​线性​​双向队列,通常作为栈或队列使用,但是栈的效率不如LinkedList高。 LinkedList: 基于链表实现的链式双向队列,通常作为栈或队列使用,但是队列的效率不如ArrayQueue高。


zhaoYQ 2022-09-30 10:49


标签:LinkedList,队列,System,println,que,集合,out
From: https://blog.51cto.com/u_15768584/5727202

相关文章

  • Java中的集合基础
    Java集合基础一、集合ArrayList概述:编程的时候如果存储多个数据,使用长度固定的数组储存格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择?......
  • 字典、元祖、集合相关方法
    字典内置方法1.类型转换可以使用dict()方法,但是不建议使用,而是用其他方式转换。print(dict((('name','pwd'),('tifa','123'))))#{'name':'pwd','tifa':'123'}#......
  • 数据类型内置方法下 字典、元组、集合、字符编码理论
    +数据类型内置方法下字典、元组、集合、字符编码理论目录§一、字典的内置方法1、字典的类型转换dict()2、字典相关操作1.按key取值(不推荐使用)2.按内置方法get取值(推荐使......
  • 9月30日内容总结——数据类型内置方法剩余部分(字典、元组、集合)、字符编码的概念及使
    目录一、字典的内置方法1、类型转换(把其他类型转换成自己的类型)2、取值3、修改数据值4、增加数据值5、删除数据值1.del方法2.pop方法6、统计字典中键值对的个数7、字典三......
  • 字典,元组,集合的内置方法
    今日内容字典的相关操作内置方法1.类型转换 关键字dict() 字典使用转换太麻烦了,所以一般不推荐使用,建议手动转2.字典必须掌握的操作#这是按k取值不推荐 u......
  • net List集合 只改变对象中的某一个属性
    classStudent{publicstringId{get;set;}publicstringName{get;set;}}List<Student>list=newList<Student>()list.add(newStudent{Id=1,Name="名......
  • 字典,元组,集合与字符编码
    字典,元组,集合内置方法字典内置法类型转换语法:dict()一般情况下不用dict转字典,主要是自己动手转字典。基本上不用print(dict(11))#整型报错print(dict(11.11)......
  • Java集合框架之List
    1.List集合概要2.Iterable接口1.概要2.重要方法forEach方法:对Collection集合中的每个对象进行消费List<Student>list=Stream.generate(()->newStudent("张......
  • 函数集合
    01提取不同文件夹下同名文件点击查看代码defselect(dir,name):importosimportshutillist1=[]list2=[]dd=''forroot,dirs,fil......
  • 集合与字典
    一、创建集合创建集合使用{}或set(),但是如果要创建空集合只能使用set(),因为{}用来创建空字典。s1={10,20,30,40,50}print(s1)#集合里面的内容是随机打印出来的,也......