zoukankan      html  css  js  c++  java
  • 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("
    *** 逆序输出  ***");
    		while(chineseIterator.hasPrevious()) {
    			System.out.print(chineseIterator.previous() + " - ");
    		}
    		
    		System.out.println("
    *** 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("
    *** englishList 每隔两个元素删除前一个元素  ***");
    		while(englishIterator.hasNext()){
    			englishIterator.next();
    			
    			if(englishIterator.hasNext()){
    				englishIterator.next();
    				englishIterator.remove();	// remove() 方法和  next() 是成对出现的,并且每次删除的都是 next() 的前一个元素
    			}
    		}
    		System.out.println(englishList);
    		
    		System.out.println("
    *** 从 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("
    *** 元素有顺序  ***");
    		System.out.print("是否有顺序:" + exists);
    	}
    
    }
    

      

  • 相关阅读:
    redis 用scan 代替keys 解决百万数据模糊查询超时问题
    集成spring-ldap
    IDEA报Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA随后闪退
    struts2响应文件 struts2下载txt
    QRCodeUtil 二维码生成 解析 带图片与不带图片的二维码
    java 手机号正则表达式 截止2019年6月最新
    Java遍历Map对象的四种方式效率对比
    SpringCloud Alibaba系列(二) Nacos高可用和持久化
    SpringCloud Alibaba系列(二) Nacos配置中心-分类配置
    SpringCloud Alibaba系列(二) Nacos使用
  • 原文地址:https://www.cnblogs.com/hapday/p/5656828.html
Copyright © 2011-2022 走看看