work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java ArrayList,LinkedList使用

Posted on 2019-06-01 14:46  work hard work smart  阅读(153)  评论(0编辑  收藏  举报

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

  打印结果