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);
	}

	/**
	 * 【元素有顺序】
	 */
	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);
	}

}

  

时间: 2024-08-08 01:28:03

LinkedList 浅析示例的相关文章

ArrayList 浅析示例

1 package com.smbea.demo; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import java.util.List; 6 7 /** 8 * 1.继承自接口 List.RandomAccess.Cloneable.Serializable: 9 * 2.实现自类 AbstractList: 10 * 3.元素有顺序: 11 * 4.增删操作由于要移动元素,故此增删比较慢: 12 * 5.查询

HashSet 浅析示例

* 1.继承自抽象类 AbstractSet,实现接口 Set.Cloneable.Serializable: * 2.元素无顺序: * 3.元素不可重复: * 4.采用哈希算法插入数据,插入速度快: * 5.非线程安全,轻量级: * 6.由于实现了接口 Cloneable,故此可以被复制: * 7.由于实现了接口 Serializable,故此可以被序列化到磁盘上: 1 package com.smbea.demo; 2 3 import java.util.HashSet; 4 import

【数据结构初学】(java实现篇)&mdash;&mdash;队列(转)

原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html 原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html 原文地址:http://www.cnblogs.com/skywang12345/p/3603935.html (自己是个javav初学者 借助一下大牛的文章 记录下每天的学习情况!大家多去这个大牛博客里面看看,里面很多干货 绝对福利!) JDK包Queue中的也提供了"队列

C#面向对象_7_集合

集合 复习foreach string[] strArr = new string[] { "小白", "小黑", "小黄", "小红", "小强" }; foreach (string s in strArr) Console.WriteLine(s); 集合 在C#中,集合和数组都可以用存储多个数据元素,但是集合比数组更加灵活,比如:集合可以动态的添加和删除其中的元素.但数组要实现这一点就非常的麻烦和死

Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数据结构第3部分 LinkedList源码解析(基于JDK1.6.0_45)第4部分 LinkedList遍历方式第5部分 LinkedL

三层浅析及示例分析

什么是三层结构?所谓三层结构,不是物理上的三层划分,也不是简单的模块划分,而是逻辑上的三层,是在客户端和数据库访问之间加入了一个中间层,形成逻辑三层结构. 三层都是哪三层?它们的作用是什么?三层结构包含:表示层UI,业务逻辑层BLL,数据访问层DAL.1 显示层,就是软件的显示部分,主要是客户端,通常表现为WEB或窗体.主要功能:接受用户输入信息.显示系统输出信息.为用户提供一个交互界面. 2 业务逻辑层,系统主要功能部分,主要处理软件的业务逻辑,处理数据. 3 数据访问层,用于对数据库的操作,

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

(转)Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数据结构第3部分 LinkedList源码解析(基于JDK1.6.0_45)第4部分 LinkedList遍历方式第5部分 LinkedL

LinkedList: 详细介绍(源码解析)和使用示例 [From skywang12345]

概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList. 和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括: 第1部分 LinkedList介绍 第2部分 LinkedList数据结构 第3部分 LinkedList源码解析(基于JDK1.6.0_45) 第4部分 LinkedList遍历方式 第5部分 L