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); } }
相关文章推荐
- linux wget
- asp.net的tag用法
- mxgraph删除所有的元素cells
- Java中toString(),(String),valueOf()的区别与联系
- 关于ViewPager的数据更新问题小结
- TCP/IP编程之close函数详解
- UIPickerView简单实用
- 自己动手编译最新Android源码及SDK
- 微信支付的封装工具类,集成微信支付
- 成为Java顶尖程序员 ,看这11本书就够了
- 300. Longest Increasing Subsequence
- codeforces 431 D. Random Task 组合数学
- nexus repair或update index 没反应 速度慢 手动配置nexus index
- java获取一维数组中连续数字分成几个连续的数字数组
- 禁止div的文字选择
- 【Android基础】趣谈Intent
- OpenGL(四)双面光照(不同材质属性)
- Struts2的异常处理
- log4j日志组件
- 各个班级学生成绩平均分