`
ncs123
  • 浏览: 103402 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

List接口、ArrayList类和LinkedList类

    博客分类:
  • J2SE
阅读更多
1.List接口继承了Collection接口,ArrayList类和LinkedList类实现了List接口。
  扩展方法:1.AnyType get(int index);
           2.AnyType set(int index,AnyType newValue);
           3.void add(int index,AnyType newValue);
           4.void remove(int index);
           5.ListIterator<AnyType> listIterator(int pos);向前向后遍历


2.ArrayList类和LinkedList类的区别。
  ArrayList:get,set快,add,remove慢,在表头插入删除的时候最慢,得移动整个数组
  LinkedList:add,remove快,get,set慢,每次get都得从表头开始遍历O(n)


3.实例说明ArrayList类和LinkedList类的区别。
      {1,2,3,4,5,6,7,8}去除偶数项。
   1.Collection在遍历的时候不能add和remove,否则会报java.util.ConcurrentModificationException。
     我们实现的方式有两种,new一个新的list,然后遍历oldList,把奇数add到newList.第二种方法是使用迭代器遍历,使用迭代器删除偶数。

方法一
private List<Integer> removeEvens1(List<Integer> list) {
		List<Integer> newList = new LinkedList<Integer>();
		for(Integer i : list){
			if(i%2==1){
				newList.add(i);
			}
		}
		return newList;
	}


方法二
private List<Integer> removeEvens2(List<Integer> list) {
		Iterator<Integer> iterator = list.iterator();
		while(iterator.hasNext()){
			int nextValue = iterator.next();
			if(nextValue%2==0){
				iterator.remove();
			}
		}
		return list;
	}

  方法一和方法二说明:
     (1)去除偶数项,LinkedArray,remove()比ArrayList快。
     (2)方法二不需要新new一个list,可以在Intertor中直接删除偶数项。
      (3)for循环遍历,ArrayList耗时O(n),LinkedList耗时O(n*n)。Itertor遍历,所有Collection耗时O(n)。
    总结:效率最高使用LinkedList和第二种方法,耗时O(n)。
     
     
4.ArrayList类的优化方法。
  ensureCapacity(int size),预定义数组长度,如果列表数据大的时候,使用ensureCapacity(int size)可以大大减少因增大数组容量而复制数组的时间。
  trimToSize(),去除数组多余的空间。在arrayList确定的时候,调用该方法可以节省空间。
分享到:
评论

相关推荐

    ArrayList LinkedList Vector区别

    ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 Vector 都是采用数组方式存储数据的,这种...

    ArrayList和Linkedlist1

    在IT领域,特别是Java编程中,ArrayList和LinkedList是两种非常重要的数据结构,它们都是List接口的实现类。理解这两者的区别对于优化程序性能至关重要。面试官询问这些知识点,旨在评估应聘者的理论基础和实践能力...

    java基础--list(ArrayList、LinkedList、匿名类).docx

    综上所述,理解并熟练运用List接口、ArrayList和LinkedList的不同特性,以及如何使用匿名类,对于编写高效的Java代码至关重要。在实际开发中,根据具体需求选择合适的数据结构,可以提高程序性能并降低复杂度。同时...

    Map+List+ArrayList+LinkedList Java源码

    常见的List实现类有ArrayList和LinkedList。 **ArrayList类** `ArrayList`是基于数组实现的List,它提供了一个动态增长的数组来存储元素。由于其底层是数组,所以它的随机访问(通过索引)速度非常快。但是,插入和...

    关于arraylist和linkedList的区别

    在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能特点以及适用场景等方面存在显著差异。 ...

    ArrayList LinkedList Vector性能测试

    这三个类都实现了List接口,提供了多种操作方法,但它们在内部实现和性能特性上有所不同。这篇性能测试着重探讨了这三者在随机读取、插入和删除操作时的表现。 1. ArrayList: ArrayList是基于数组实现的列表,它...

    比较ArrayList、LinkedList、Vector1

    List接口的实现类主要有ArrayList、LinkedList和Vector。 2. **ArrayList** - **实现原理**:ArrayList基于动态数组实现,它提供快速的按索引访问,因为数组支持直接通过索引获取元素。 - **添加和删除**:对于在...

    ArrayList、Vector、LinkedList 的区别.docx

    在 Java 集合框架中,ArrayList、Vector、LinkedList 是三个常用的 List 实现类,虽然它们都实现了 List 接口,但是它们在继承关系、实现接口、底层数据结构、扩容机制等方面存在着一些区别。 首先,从继承关系来看...

    list集合案例增、删、改、查,ArrayList与LinkedList的区别,LinkedList堆栈/队列的开发

    本篇文章将深入探讨`List`集合的各种操作,包括增、删、改、查,以及`ArrayList`和`LinkedList`两种实现`List`接口的类之间的区别。同时,我们还将讨论如何利用`LinkedList`实现堆栈和队列的功能,并了解`List`集合...

    合理运用ArrayList与LinkedList

    在Java的集合框架中,ArrayList和LinkedList是两种常用的列表实现,它们都实现了List接口,但它们在内存管理和操作效率上存在显著差异。了解这些差异并根据具体应用场景选择合适的列表类型,能够有效提升J2EE应用...

    当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

    在 Java 中,ArrayList 和 LinkedList 是两个常用的集合类,它们都是 List 接口的实现类,但它们之间有着鲜明的区别。今天,我们将深入探讨这两个集合类的实现原理和比较。 ArrayList 的实现原理 ArrayList 是基于...

    arraylist-linkedlist-test.zip

    ArrayList和LinkedList是Java集合框架中两种重要的动态数组实现,它们都是List接口的实现类,但它们在存储和操作数据方面有着显著的区别。本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作...

    java 集合之实现类ArrayList和LinkedList的方法

    Java 集合框架中,ArrayList 和 LinkedList 是两种常用的实现类,分别实现了 List 接口。下面我们将详细介绍这两种实现类的方法。 ArrayList ArrayList 是一个基于数组实现的 List 接口实现类,它的底层是使用数组...

    arraylist和linkedlist的时间复杂度

    arraylist 和linked list的时间复杂度

    JDK1.6中Arraylist,Vector,LinkedList源码

    在Java编程语言中,ArrayList、Vector和LinkedList是三种常见的动态数组实现,它们都属于集合框架中的List接口。这里我们将深入探讨这三种数据结构的源码,理解它们的内部实现、性能特性和适用场景。 首先,...

    java集合类详解(set list ArrayList等java集合类详述)

    集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    ArrayList和LinkedList是两种常用的List实现类。ArrayList实现了可变大小的数组,它允许所有元素,包括null。ArrayList没有同步。size、isEmpty、get、set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    ArrayList和LinkedList虽然不是Set,但它们的父接口List属于Collection,而Collection接口有一个子接口Set,例如HashSet是Set接口的一个实现,它内部基于HashMap实现,保证元素唯一性。 7. WeakHashMap WeakHashMap...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的容器类是非常重要的。 Collection接口是Java中最基本的集合...

Global site tag (gtag.js) - Google Analytics