您的位置:首页 > 其它

LinkedList 浅析示例

2016-07-09 22:57 369 查看
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);
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: