LinkedList 浅析示例
package com.smbea.demo; import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator; /**
* 1、继承自接口 List、Deque、Cloneable、Serializable;
* 2、实现自类 AbstractSequentialList;
* 3、由于继承自抽象类 AbstractSequentialList,故此元素是有顺序的;
* 4、增删操作由于要移动元素,故此增删比较慢;
* 5、查询操作由于采用的是索引,故此查询比较快;
* 6、非线程安全的-轻量级;
* 7、由于实现了接口 Deque,元素是有序的;
* 8、由于实现了接口 Cloneable,故可以复制 LinkedList;
* 9、由于实现了接口 Serializable,故可以被序列化
* @author hapday
*/
public class LinkedListDemo { public static void main(String[] args) {
elementRepeatableTest(); elementSequentialTest();
} /**
* 验证【元素可重复】
*/
public static void elementRepeatableTest() {
List<String> chineseList = new LinkedList<String> ();
chineseList.add("甲");
chineseList.add("乙");
chineseList.add("乙");
chineseList.add("丙");
chineseList.add("丁"); List<String> englishList = new LinkedList<String> ();
englishList.add("A");
englishList.add("B");
englishList.add("B");
englishList.add("C");
englishList.add("D"); ListIterator<String> chineseIterator = chineseList.listIterator(); // 支持逆序迭代
Iterator<String> englishIterator = englishList.iterator(); // 只支持顺序迭代 System.out.println("*** 顺序输出 ***");
while(chineseIterator.hasNext()){
System.out.print(chineseIterator.next() + " - ");
} System.out.println("\n*** 逆序输出 ***");
while(chineseIterator.hasPrevious()) {
System.out.print(chineseIterator.previous() + " - ");
} System.out.println("\n*** chineseList 间隔插入 englishList 中的元素 ***");
while(englishIterator.hasNext()){
if(chineseIterator.hasNext()){
chineseIterator.next();
} chineseIterator.add(englishIterator.next()); // chineseList 间隔插入 englishList 中的元素
}
System.out.println(chineseList); englishIterator = englishList.iterator();
System.out.println("\n*** englishList 每隔两个元素删除前一个元素 ***");
while(englishIterator.hasNext()){
englishIterator.next(); if(englishIterator.hasNext()){
englishIterator.next();
englishIterator.remove(); // remove() 方法和 next() 是成对出现的,并且每次删除的都是 next() 的前一个元素
}
}
System.out.println(englishList); System.out.println("\n*** 从 chineseList 中移除 englishList 的元素 ***");
chineseList.removeAll(englishList);
System.out.println(chineseList);
} /**
* 【元素有顺序】
*/
public static void elementSequentialTest() {
List<Integer> list = new LinkedList<Integer> ();
for(int index = 1; index <= 100000; index++){
list.add(index); // 加入 10 万的元素
} boolean exists = true; // 是否存在:true-存在;false-不存在
int current = 0; // 当前元素
int previous = 0; // 上一个元素
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
current = iterator.next();
if(current < previous){
exists = false;
} previous = current;
} System.out.println("\n*** 元素有顺序 ***");
System.out.print("是否有顺序:" + exists);
} }
LinkedList 浅析示例的更多相关文章
- LinkedList浅析
LinkedList浅析 LinkedList是Collection下的一个list实现,就像ArrayList一样. 和ArrayList不同的是它是链表结构,而ArrayList是顺序结构.我们平 ...
- Java集合框架之LinkedList浅析
Java集合框架之LinkedList浅析 一.LinkedList综述: 1.1LinkedList简介 同ArrayList一样,位于java.util包下的LinkedList是Java集合框架 ...
- LinkedList 基本示例及源码解析
目录 一.JavaDoc 简介 二.LinkedList 继承接口和实现类介绍 三.LinkedList 基本方法介绍 四.LinkedList 基本方法使用 五.LinkedList 内部结构以及基 ...
- HashSet 浅析示例
* 1.继承自抽象类 AbstractSet,实现接口 Set.Cloneable.Serializable: * 2.元素无顺序: * 3.元素不可重复: * 4.采用哈希算法插入数据,插入速度快: ...
- ArrayList 浅析示例
package com.smbea.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...
- Java中ArrayList和LinkedList的异同
一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间.遍历元素和随机访问元 ...
- Java列表
Java列表踩过的坑 其中subList是RandomAccessSubList,不是序列化的列表,不可以加入tair. 加入tair测试代码 @Autowired private CacheMana ...
- 【数据结构初学】(java实现篇)——队列(转)
原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html 原文地址:http://www.cnblogs.com/skywang12345/p/3 ...
- 队列的图文解析 和 对应3种语言的实现(C/C++/Java)
概要 本章和介绍"栈"时的流程一样,先对队列进行介绍,然后分别给出队列的C.C++和Java三种语言的实现.内容包括:1. 队列的介绍2. 队列的C实现3. 队列的C++实现4. ...
随机推荐
- Rust初步(四):在rust中处理时间
这个看起来是一个很小的问题,我们如果是在.NET里面的话,很简单地可以直接使用System.DateTime.Now获取到当前时间,还可以进行各种不同的计算或者输出.但是这样一个问题,在rust里面, ...
- iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调
UICollectionView的布局是可以自己定义的,在这篇博客中先在上篇博客的基础上进行扩充,我们先使用UICollectionViewFlowLayout,然后好好的介绍一下UICollecti ...
- PHP的学习--在sublime中使用XDebug(Ubuntu)
说起来惭愧,自从开始使用Sublime Text之后,再也没有debug过PHP的代码,最近把debug的环境搭建了一下,在这里记录一下. 安装XDebug sudo apt-get install ...
- Difference Between HashMap and IdentityHashMap--转
原文地址:https://dzone.com/articles/difference-between-hashmap-and Most of the time I use HashMap whenev ...
- 10个惊艳的Swift单行代码
几年前,一篇表述“10个Scala函数式单行代码”的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C# ...
- 用HTML5 CANVAS做自定义路径的动态效果图片!
最近对HTML5开始感兴趣了,实现的效果如下图,大家可以从代码里换掉图片 我用的是canvas里面的2d绘图,其中上图的路径是网上在线绘制的,我太懒了,哈哈 下面是网址: http://www.vic ...
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目 Android-Universal-Image-Loader 或者 ignition 都是个很好的选择. 在这里把原来 ...
- 跨平台运行ASP.NET Core 1.0
前言 首先提一下微软更名后的叫法: ASP.NET 5 更名为 ASP.NET Core 1.0 .NET Core 更名为 .NET Core 1.0 Entity Framework 7 更名为 ...
- OA项目——总结
先来张大致结构图: 项目链接:https://github.com/shuai7boy/YM_OA
- 获取form对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...