java 遍历 likedlist_Java集合02----LinkedList的遍历方式及应用
Java集合02----LinkedList的遍历方式及应用
前面已经学习了ArrayList的源码,为了学以致用,故列举一些ArrayList的遍历方式及应用。
1.LinkedList的遍历方式
a.一般的for循环(随机访问)
int size = list.size();
for (int i=0; i
list.get(i);
}
b.for--each循环
for (Integer integ:list)
;c.迭代器iterator
for(Iterator iter = list.iterator(); iter.hasNext();)
iter.next();d.用pollFirst()来遍历LinkedList
while(list.pollFirst() != null)
;e.用pollLast()来遍历LinkedList
while(list.pollLast() != null)
;f.用removeFirst()来遍历LinkedList
try {
while(list.removeFirst() != null)
;
} catch (NoSuchElementException e) {
}g.用removeLast()来遍历LinkedList
try {
while(list.removeLast() != null)
;
} catch (NoSuchElementException e) {
}
LinkedList遍历效率分析:
package com.sheepmu;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.NoSuchElementException;
/*
* @author SheepMu
*/
public class LinkedListTest {
public static void main(String[] args) {
LinkedList llist = new LinkedList();
for (int i=0; i<100000; i++)
llist.addLast(i);
byCommonFor(llist) ;// 通过一般for循环来遍历LinkedList
byForEach(llist) ; // 通过for-each来遍历LinkedList
byIterator(llist) ; // 通过Iterator来遍历LinkedList
byPollFirst(llist) ; // 通过PollFirst()遍历LinkedList
byPollLast(llist) ; // 通过PollLast()遍历LinkedList
byRemoveFirst(llist) ; // 通过removeFirst()遍历LinkedList
byRemoveLast(llist) ; // 通过removeLast()遍历LinkedList
}
private static void byCommonFor(LinkedList list) {// 通过一般for循环来遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
int size = list.size();
for (int i=0; i
list.get(i);
}
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byCommonFor------->" + total+" ms");
}
private static void byForEach(LinkedList list) {// 通过for-each来遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
for (Integer integ:list)
;
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byForEach------->" + total+" ms");
}
private static void byIterator(LinkedList list) {// 通过Iterator来遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
for(Iterator iter = list.iterator(); iter.hasNext();)
iter.next();
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byIterator------->" + total+" ms");
}
private static void byPollFirst(LinkedList list) {//通过PollFirst()遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
while(list.pollFirst() != null)
;
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byPollFirst------->" + total+" ms");
}
private static void byPollLast(LinkedList list) {// 通过PollLast()遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
while(list.pollLast() != null)
;
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byPollLast------->" + total+" ms");
}
private static void byRemoveFirst(LinkedList list) {// 通过removeFirst()遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
try {
while(list.removeFirst() != null)
;
} catch (NoSuchElementException e) {
}
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byRemoveFirst------->" + total+" ms");
}
private static void byRemoveLast(LinkedList list) {// 通过removeLast()遍历LinkedList
if (list == null)
return ;
long start = System.currentTimeMillis();
try {
while(list.removeLast() != null)
;
} catch (NoSuchElementException e) {
}
long end = System.currentTimeMillis();
long total = end - start;
System.out.println("byRemoveLast------->" + total+" ms");
}
}byCommonFor------->5342 ms
byForEach------->11 ms
byIterator------->8 ms
byPollFirst------->4 ms
byPollLast------->0 ms
byRemoveFirst------->0 ms
byRemoveLast------->0 ms
由此可见,遍历LinkedList时,使用removeFist()或removeLast()效率最高。但用它们遍历时,会删除原始数据;若单纯只读取,而不删除,LinkedList遍历时建议使用For-each或者迭代器的方式。千万不要通过随机访问去遍历LinkedList!
2.LinkedList应用举例
a.LinkedList常用方法举例
package com.sheepmu;
import java.util.LinkedList;
/*
* @author SheepMu
*/
public class LinkedListTest {
public static void main(String[] args) {
commonMethods() ; // 测试LinkedList的常用方法
likeStack();// 将LinkedList当作 LIFO(后进先出)的堆栈
likeQueue(); // 将LinkedList当作 FIFO(先进先出)的队列
}
private static void commonMethods() {
LinkedList llist = new LinkedList();
llist.add("A");//添加元素
llist.add("B");
llist.add("C");
llist.add("D");
System.out.println("llist------->"+llist);
llist.add(1, "E");// 将“E”添加到第索引为1的个位置
System.out.println("添加E到索引为1的个位置后的llist------->"+llist);
llist.addFirst("X");// 将“X”添加到第一个位置。 失败的话,抛出异常!
System.out.println("在最前面添加X后的llist------->"+llist);
System.out.println("删除第一个元素并获得并返回被删除元素----->"+llist.removeFirst()); // 将第一个元素删除。
System.out.println("删除第一个元素后的llist------->"+llist);
llist.offerFirst("Y");// 将“Y”添加到第一个位置。 返回true。
System.out.println("将Y添加到第一个位置后的llist------->"+llist);
System.out.println("删除第一个元素并获得并返回被删除元素------>"+llist.pollFirst()); // 将第一个元素删除。
System.out.println("将第一个元素删除后的llist------->"+llist);
llist.removeLast() ;
System.out.println("移除最后一个元素后的llist------->"+llist);
llist.offerLast("Z"); // 将“Z”添加到最后一个位置
System.out.println("在最后添加Z后的llist------->"+llist);
llist.set(2, "M");// 将第3个元素设置M。
System.out.println("将第3个元素设置M后的llist------->"+llist);
System.out.println("size:"+llist.size());// LinkedList大小
llist.clear();// 清空LinkedList
}
private static void likeStack() { //将LinkedList作为栈使用!!!!!!!!!!!!
LinkedList stack = new LinkedList();
stack.push("A");//向栈中添加元素
stack.push("B");
stack.push("C");
stack.push("D");
System.out.println("stack--------->"+stack);
stack.pop() ;// 删除“栈顶元素”
System.out.println("删除栈顶后的stack--------->"+stack);
System.out.println("栈顶元素--------->"+stack.peek()); // 取出栈顶
}
private static void likeQueue() {//将LinkedList作为队列使用!!!!!!!!!!!!
LinkedList queue = new LinkedList();
queue.add("A");//向队列中添加元素
queue.add("B");
queue.add("C");
queue.add("D");
System.out.println("queue--------->"+queue);
queue.remove() ;//删除队列的第一个元素
System.out.println("删除队列的第一个元素后queue--------->"+queue);
System.out.println("队列第一个元素------->"+queue.element()); // 读取队列的第一个元素
}
}llist------->[A, B, C, D]
添加E到索引为1的个位置后的llist------->[A, E, B, C, D]
在最前面添加X后的llist------->[X, A, E, B, C, D]
删除第一个元素并获得并返回被删除元素----->X
删除第一个元素后的llist------->[A, E, B, C, D]
将Y添加到第一个位置后的llist------->[Y, A, E, B, C, D]
删除第一个元素并获得并返回被删除元素------>Y
将第一个元素删除后的llist------->[A, E, B, C, D]
移除最后一个元素后的llist------->[A, E, B, C]
在最后添加Z后的llist------->[A, E, B, C, Z]
将第3个元素设置M后的llist------->[A, E, M, C, Z]
size:5
stack--------->[D, C, B, A]
删除栈顶后的stack--------->[C, B, A]
栈顶元素--------->C
queue--------->[A, B, C, D]
删除队列的第一个元素后queue--------->[B, C, D]
队列第一个元素------->B
原文:http://blog.csdn.net/sheepmu/article/details/28702423
java 遍历 likedlist_Java集合02----LinkedList的遍历方式及应用相关推荐
- Java中List集合的三种遍历方式(全网最详)
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- java map集合遍历方法,Java的Map集合的三种遍历方法
集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...
- Java中Map集合的三种遍历方式
文章目录 Map集合的遍历方式 Map集合的遍历方式一: 键找值 Map集合的遍历方式二: 键值对 Map集合的遍历方式三: Lambda Map集合的遍历方式 Map集合的遍历方式有3种: 方式一: ...
- 【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )
文章目录 一.使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 二.代码示例 一.使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 调用集合的 collect ...
- Java中List集合去重的几种方式
准备数据: // 准备数据 List<String> list = new ArrayList(); list.add("a"); list.add("b&q ...
- java 16 - 15 集合嵌套存储和遍历元素
集合的嵌套遍历 需求: 自然界有很多动物的种类,猫科,犬科,鸟类这些. 那就是有很多的ArrayList<Animal> 而现在,我想要把这些ArrayList<Animal> ...
- java中List集合的几种遍历方式
本文中我们给出了List集合中的四种遍历方式,分别是for循环,迭代器循环,代码及相应的注释如下: package d1_collection;import java.util.*;public cl ...
- Java数组、集合的三种遍历方式(包懂)
1 for循环 for(int i = 0;i<arr.length;i++){System.out.print(arr[i]+" "); } 2 foreach循环,这种方 ...
- java链表list_java集合之linkedList链表基础
LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...
最新文章
- leetcode.169 求众数
- U盘安装CentOS 7
- docker 部署mysql服务之后,执行sql脚本
- 部署awstats分析系统
- LeetCode之字符串(C++)的切割简单实现
- 外设驱动库开发笔记3:AD527x系列数字电位器驱动
- Java static用法代码讲解
- iBooker AI+财务提升星球 2020.4 热门讨论
- ssms的导入功能_SSMS 17中的新增功能; PowerShell和DAX
- 对华为GPU Turbo实现的猜测
- 微信登录分享...报错...MicroMsg.SDK.WXApiImplV10: handleIntent fail, ex = println needs a message
- 如何用photoshop给图片添加水印?
- word为什么前面空白但是字上不去?
- win10代理服务器没有响应解决方案
- wallhaven壁纸下载
- H264---码率控制---CBR、VBR、ABR、CVBR四种编码方式
- java文件输入输出
- 最优化八:高斯牛顿法、LM法
- 微信公众号开发完整教程(一) PHP7.0版本,TP5.0框架
- 手把手教你快速搭建一个代码在线编辑预览工具
热门文章
- 晶圆缺陷检测设备_KLA突破电子束晶圆缺陷检测瓶颈,将助EUV光刻机一臂之力
- Tomcat 5.0.18 安装配置指南
- SSM-网站后台管理系统制作(3)---Google的reCaptcha验证码
- Django学习手册 - 前端input数据获取
- k8s+jenkins
- jquery 检查 金钱类型
- 如果人类的历史共有100万年,假设这等于一天
- 备受期待!机器学习“蜥蜴书”最新版来了!豆瓣评分9.9!
- 风靡全球的GANs:一文看尽这“混世魔王”的“三生三世”
- LeCun:放弃深度学习吧,AI的未来是能量学习