List接口、ArrayList类和LinkedList类 笔记
来源:互联网 发布:苹果免费打电话软件 编辑:程序博客网 时间:2024/06/05 20:30
List接口继承了Collection接口,它包含了Collection接口的所有方法,外加其他一些方法:
public interface List<AnyType> extends Collection<AnyType> {AnyType get(int index);AnyType set(int index, AnyType newVal);void add(int index, AnyType x);void remove(int index);ListIterator<AnyType> listIterator(int pos);}ArrayList类提供了List ADT的一种可增长数组的实现。LinkedList类则提供了List ADT的双链表实现。
remove方法对LinkedList类的使用:
public static void removeEvensVer1(List<Integer> list) {int i = 0;while(i < list.size()) {if(list.get(i) % 2 == 0) {list.remove(i);} else {i++;}}}
LinkedList对get调用的效率不高,而且,对remove的调用同样低效,因为达到位置i的代价是昂贵的。
小tips:
在增强的for循环中也就是利用iterator进行迭代时,是不能对正在被迭代的集合上进行结构上的改变(即对该集合使用add、remove或clear方法),否则迭代器就不再合法(抛出ConcurrentModificationException异常)。只有在需要立即使用一个迭代器的时候,才获取迭代器。然而,如果迭代器调用了自己的remove方法,那么这个迭代器就仍然是合法的。
public static void removeEvensVer3(List<Integer> list) {Iterator<Integer> iterator = list.iterator();while(iterator.hasNext()) {if(iterator.next() % 2 == 0) {iterator.remove();}}}上面指出一种成功的想法。对于一个LinkedList,对该迭代器的remove方法的调用只花费常数时间。因此,对于LinkedList,整个程序花费线性时间。对于一个ArrayList,即使迭代器位于需要被删除的节点上,其remove方法仍然是昂贵的,因为数组的项必须要移动,整个程序仍然花费二次时间。
关于ListIterator接口:
ListIterator扩展了Iterator的功能:
public interface ListIterator<AnyType> extends Iterator<AnyType> {boolean hasPrevious();AnyType previous();void add(AnyType x);void set(AnyType newVal);}
0 0
- List接口、ArrayList类和LinkedList类 笔记
- 表中-list接口ArrayList类和LinkedList类
- 【转载】List接口学习笔记(ArrayList和LinkedList)
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
- List接口的实现类ArrayList和LinkedList的一些区别(备忘)
- JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList
- list arraylist 和 linkedlist
- List接口和ArrayList类练习
- List接口和ArrayList类练习
- 20151117 List集合+ArrayList类+LinkedList类
- List,ArrayList, LinkedList类的区别
- List的ArrayList和LinkedList
- LinkedList类和ArrayList类
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- 08.集合框架(一)【集合概述】【接口Collection,Iterator,List,ListIterator】【类LinkedList,ArrayList】
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- Java集合框架-1.【集合类】【Collection接口】【List】【ArrayList】【Vector】【LinkedList】
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源码解析
- 从数据库用户表在fastdfs文件系统批量创建头像一例
- iOS---如何把导航默认的返回按钮设置成“返回”
- C/C++面试题精选
- PHP+MySQL的操作
- UIGestureRecognizer手势识别详解
- List接口、ArrayList类和LinkedList类 笔记
- IOS 的 7 中手势的介绍 和详细使用(UIGestureRecognizer) UIScreenEdgePanGestureRecognizer
- centos6.4安装mysql5.5
- C算法--堆排序
- CFileDialog类无故崩溃的解决及原因分析
- Hive远程模式安装
- 如何快速正确的安装 Ruby, Rails 运行环境
- 数据结构课程设计-学生信息管理系统
- 浏览器通过下载来下载文件