zoukankan      html  css  js  c++  java
  • Java ArrayList,LinkedList使用

    1、ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上回在底层生成一个长度为10的Object类型数组。

    2、如果增加的元素个数超过10个,那么ArrayList底层会将数组长度扩大到原数组的1.5倍。

    3、对ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。

    4、关于ArrayList与LinkedList的比较分析

    a) ArrayList底层采用数组实现,LinkedList底层采用双向链表实现

    b)当执行插入或删除操作是,采用LinkedList比较好。

    c)当执行搜索操作时,采用ArrayList比较好。

     5、当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层所维护的数组当中; 当向LinkedList中添加一个对象时,实际上LinkedList内部会生成一个Entry对象,该Entry对象的结构为:

    Entry{

      Entry previous;

      Object element;

      Entry next;

    }

    其中的Object类型的元素element就是我们向LinkedList中所添加的元素,然后Entry又构造好了向前与向后的引用previous、next,最后将生成的这个Entry对象加入到了链表当中。换句话说,LinkedList中所维护的是一个个Entry对象

    6、使用LinkedList实现队列Queue

    public class MyQueue {
    	
    	private LinkedList list = new LinkedList();
    	
    	public void put(Object obj){
    		list.add(obj);
    	}
    	public Object get(){
    		return list.removeFirst();
    	}
    	
    	
    	public boolean isEmpty(){
    		return list.isEmpty();
    		
    	}
    	
    	public static void main(String[] args) {
    		MyQueue myQueue = new MyQueue();
    		myQueue.put("one");
    		myQueue.put("two");
    		myQueue.put("three");
    		
    		System.out.println(myQueue.get());
    		System.out.println(myQueue.get());
    		System.out.println(myQueue.get());
    		
    		System.out.println(myQueue.isEmpty());
    	}
    	
    	
    }
    

      打印结果

  • 相关阅读:
    软件测试 -- alpha测试和beta测试的区别
    软件测试--各种测试的概念
    linux 安装memcached
    Visual Studio 2013 Preview
    基于HAL库STM32的FSMC驱动8位TFTLCD屏
    LM358电压跟随器
    广耦的应用
    MOS管的开关作用
    三极管的开关作用
    STM32的BOOT0 BOOT1的选择
  • 原文地址:https://www.cnblogs.com/linlf03/p/10959594.html
Copyright © 2011-2022 走看看