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 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 Vector 都是采用数组方式存储数据的,这种...
在IT领域,特别是Java编程中,ArrayList和LinkedList是两种非常重要的数据结构,它们都是List接口的实现类。理解这两者的区别对于优化程序性能至关重要。面试官询问这些知识点,旨在评估应聘者的理论基础和实践能力...
综上所述,理解并熟练运用List接口、ArrayList和LinkedList的不同特性,以及如何使用匿名类,对于编写高效的Java代码至关重要。在实际开发中,根据具体需求选择合适的数据结构,可以提高程序性能并降低复杂度。同时...
常见的List实现类有ArrayList和LinkedList。 **ArrayList类** `ArrayList`是基于数组实现的List,它提供了一个动态增长的数组来存储元素。由于其底层是数组,所以它的随机访问(通过索引)速度非常快。但是,插入和...
在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能特点以及适用场景等方面存在显著差异。 ...
这三个类都实现了List接口,提供了多种操作方法,但它们在内部实现和性能特性上有所不同。这篇性能测试着重探讨了这三者在随机读取、插入和删除操作时的表现。 1. ArrayList: ArrayList是基于数组实现的列表,它...
List接口的实现类主要有ArrayList、LinkedList和Vector。 2. **ArrayList** - **实现原理**:ArrayList基于动态数组实现,它提供快速的按索引访问,因为数组支持直接通过索引获取元素。 - **添加和删除**:对于在...
在 Java 集合框架中,ArrayList、Vector、LinkedList 是三个常用的 List 实现类,虽然它们都实现了 List 接口,但是它们在继承关系、实现接口、底层数据结构、扩容机制等方面存在着一些区别。 首先,从继承关系来看...
本篇文章将深入探讨`List`集合的各种操作,包括增、删、改、查,以及`ArrayList`和`LinkedList`两种实现`List`接口的类之间的区别。同时,我们还将讨论如何利用`LinkedList`实现堆栈和队列的功能,并了解`List`集合...
在Java的集合框架中,ArrayList和LinkedList是两种常用的列表实现,它们都实现了List接口,但它们在内存管理和操作效率上存在显著差异。了解这些差异并根据具体应用场景选择合适的列表类型,能够有效提升J2EE应用...
在 Java 中,ArrayList 和 LinkedList 是两个常用的集合类,它们都是 List 接口的实现类,但它们之间有着鲜明的区别。今天,我们将深入探讨这两个集合类的实现原理和比较。 ArrayList 的实现原理 ArrayList 是基于...
ArrayList和LinkedList是Java集合框架中两种重要的动态数组实现,它们都是List接口的实现类,但它们在存储和操作数据方面有着显著的区别。本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作...
Java 集合框架中,ArrayList 和 LinkedList 是两种常用的实现类,分别实现了 List 接口。下面我们将详细介绍这两种实现类的方法。 ArrayList ArrayList 是一个基于数组实现的 List 接口实现类,它的底层是使用数组...
arraylist 和linked list的时间复杂度
在Java编程语言中,ArrayList、Vector和LinkedList是三种常见的动态数组实现,它们都属于集合框架中的List接口。这里我们将深入探讨这三种数据结构的源码,理解它们的内部实现、性能特性和适用场景。 首先,...
集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...
ArrayList和LinkedList是两种常用的List实现类。ArrayList实现了可变大小的数组,它允许所有元素,包括null。ArrayList没有同步。size、isEmpty、get、set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个...
ArrayList和LinkedList虽然不是Set,但它们的父接口List属于Collection,而Collection接口有一个子接口Set,例如HashSet是Set接口的一个实现,它内部基于HashMap实现,保证元素唯一性。 7. WeakHashMap WeakHashMap...
List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的容器类是非常重要的。 Collection接口是Java中最基本的集合...