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列表
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. ...
-
队列的实现——java
同样实现方法有两种: 1. 数组的实现,可以存储任意类型的数据(略): 2. Java的 Collection集合 中自带的"队列"(LinkedList)的示例: import ...
随机推荐
-
js动画之缓冲运动
缓冲运动就是运动的速度与时间或者距离有关联,不是一般的匀速运动 <!DOCTYPE html> <html lang="en"> <head> ...
-
pom.xml详解
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...
-
Fedora22编译Qt3.3.X
FC22编译QT3 安装g++ dnf install gcc-c++ 1,configure ./configure -thread -no-nis -system-libpng -system-l ...
-
读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
读 <.Net 之美>解析.Net Remoting (应用程序域)-Part1 理解 .Net Remoting 前言: 看张子阳老师的文章,总是给自己很大的信心,这个专题基本上以张老师 ...
-
【leetcode❤python】 Maximum Depth of Binary Tree
#-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):# def __init ...
-
WPF窗口长时间无人操作鼠标自动隐藏
在软件开发中有时会有等待一段时间无人操作后隐藏鼠标,可能原因大致如下: 1.为了安全性,特别是那些需要用到用户名和密码登录服务端的程序,常常考虑长期无人操作,程序自动跳转到用户登录界面: 2.软件为了 ...
-
Hadoop HDFS概念学习系列之分布式文件管理系统(二十五)
数据量越来越多,在一个操作系统管辖的范围存在不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来 管理多台机器上的文件,这就是分布式文件管理系统. 是一种允许文件 ...
-
C++ VARIANT 学习小记录
一:为什么会有这个? 目前,计算机语言有很多(大哥,为什么不能就那么一样呢?),如C++.Java,此外还有JavaScript.VBScript等脚本语言,它们自立门派,各自维护自己的数据类型. C ...
-
卸载mysql时,如何卸载干净!
相信很多朋友在使用mysql的过程中都会遇到这样的问题,安装过程出错,或者想要换个版本,或者不想使用了,这个时候我们都需要完全卸载mysql呢?下面,就来谈一谈我的经验. 1.控制面板——>所有 ...
-
freemarker.template.TemplateException:Error executing macro:mainSelect
1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...