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

      打印结果

  • 相关阅读:
    转!!CSRF攻击与防御(写得非常好)
    quartz集群 定时任务 改成可配置
    原!!将集合分段处理
    CentOS 6.5 下安装 Redis 2.8.7
    四层和七层负载均衡的区别介绍(转载)
    使用中值滤波原理过滤异常数据
    ThinkPHP5 <= 5.0.22 远程代码执行高危漏洞
    ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
    nginx 下载 大文件被截断
    mysql 存储过程 有数据修改 没数据插入
  • 原文地址:https://www.cnblogs.com/linlf03/p/10959594.html
Copyright © 2011-2022 走看看