LinkedList 浅析示例

时间:2022-09-15 15:03:31
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 浅析示例的更多相关文章

  1. LinkedList浅析

    LinkedList浅析 LinkedList是Collection下的一个list实现,就像ArrayList一样. 和ArrayList不同的是它是链表结构,而ArrayList是顺序结构.我们平 ...

  2. Java集合框架之LinkedList浅析

    Java集合框架之LinkedList浅析 一.LinkedList综述: 1.1LinkedList简介 同ArrayList一样,位于java.util包下的LinkedList是Java集合框架 ...

  3. LinkedList 基本示例及源码解析

    目录 一.JavaDoc 简介 二.LinkedList 继承接口和实现类介绍 三.LinkedList 基本方法介绍 四.LinkedList 基本方法使用 五.LinkedList 内部结构以及基 ...

  4. HashSet 浅析示例

    * 1.继承自抽象类 AbstractSet,实现接口 Set.Cloneable.Serializable: * 2.元素无顺序: * 3.元素不可重复: * 4.采用哈希算法插入数据,插入速度快: ...

  5. ArrayList 浅析示例

    package com.smbea.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...

  6. Java列表

    Java列表踩过的坑 其中subList是RandomAccessSubList,不是序列化的列表,不可以加入tair. 加入tair测试代码 @Autowired private CacheMana ...

  7. 【数据结构初学】(java实现篇)——队列(转)

    原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html 原文地址:http://www.cnblogs.com/skywang12345/p/3 ...

  8. 队列的图文解析 和 对应3种语言的实现&lpar;C&sol;C&plus;&plus;&sol;Java&rpar;

    概要 本章和介绍"栈"时的流程一样,先对队列进行介绍,然后分别给出队列的C.C++和Java三种语言的实现.内容包括:1. 队列的介绍2. 队列的C实现3. 队列的C++实现4.  ...

  9. 队列的实现——java

    同样实现方法有两种: 1. 数组的实现,可以存储任意类型的数据(略): 2. Java的 Collection集合 中自带的"队列"(LinkedList)的示例: import ...

随机推荐

  1. js动画之缓冲运动

    缓冲运动就是运动的速度与时间或者距离有关联,不是一般的匀速运动 <!DOCTYPE html> <html lang="en"> <head> ...

  2. pom&period;xml详解

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...

  3. Fedora22编译Qt3&period;3&period;X

    FC22编译QT3 安装g++ dnf install gcc-c++ 1,configure ./configure -thread -no-nis -system-libpng -system-l ...

  4. 读 《&period;Net 之美》解析&period;Net Remoting (应用程序域)-- Part&period;1

    读 <.Net 之美>解析.Net Remoting (应用程序域)-Part1 理解 .Net Remoting 前言: 看张子阳老师的文章,总是给自己很大的信心,这个专题基本上以张老师 ...

  5. 【leetcode❤python】 Maximum Depth of Binary Tree

    #-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init ...

  6. WPF窗口长时间无人操作鼠标自动隐藏

    在软件开发中有时会有等待一段时间无人操作后隐藏鼠标,可能原因大致如下: 1.为了安全性,特别是那些需要用到用户名和密码登录服务端的程序,常常考虑长期无人操作,程序自动跳转到用户登录界面: 2.软件为了 ...

  7. Hadoop HDFS概念学习系列之分布式文件管理系统(二十五)

    数据量越来越多,在一个操作系统管辖的范围存在不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来 管理多台机器上的文件,这就是分布式文件管理系统. 是一种允许文件 ...

  8. C&plus;&plus; VARIANT 学习小记录

    一:为什么会有这个? 目前,计算机语言有很多(大哥,为什么不能就那么一样呢?),如C++.Java,此外还有JavaScript.VBScript等脚本语言,它们自立门派,各自维护自己的数据类型. C ...

  9. 卸载mysql时,如何卸载干净!

    相信很多朋友在使用mysql的过程中都会遇到这样的问题,安装过程出错,或者想要换个版本,或者不想使用了,这个时候我们都需要完全卸载mysql呢?下面,就来谈一谈我的经验. 1.控制面板——>所有 ...

  10. freemarker&period;template&period;TemplateException&colon;Error executing macro&colon;mainSelect

    1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...