List集合ArrayList,LinkList
2017-08-19 22:33
267 查看
1.List是Collection子接口,拥有其所有方法。
2.List是有序集合,集合中每个元素都有对应顺序序列。List集合可使用重复元素,可以通过索引来访问指定位置的集合元素(顺序索引从0开始) List集合默认按元素的添加顺序设置元素的索引,类似数组。(有序可重复)
3.ListIterator是Iterator的子接口,是List集合特有的迭代输出接口,它可以实现在迭代过程中对元素的增删改查。(详细介绍:http://blog.csdn.net/qq_36330228/article/details/77417163)
4.List接口中常用类:
Vector:线程安全,但速度慢,已被ArrayList替代
ArrayList:线程不安全,查询速度快
LinkList:链表结构,增删速度快
运行:
总结:
1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
3. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
4. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
2.List是有序集合,集合中每个元素都有对应顺序序列。List集合可使用重复元素,可以通过索引来访问指定位置的集合元素(顺序索引从0开始) List集合默认按元素的添加顺序设置元素的索引,类似数组。(有序可重复)
3.ListIterator是Iterator的子接口,是List集合特有的迭代输出接口,它可以实现在迭代过程中对元素的增删改查。(详细介绍:http://blog.csdn.net/qq_36330228/article/details/77417163)
4.List接口中常用类:
Vector:线程安全,但速度慢,已被ArrayList替代
ArrayList:线程不安全,查询速度快
LinkList:链表结构,增删速度快
package com.wql; import java.awt.List; import java.util.ArrayList; import java.util.Iterator; import java.util.ListIterator; /** * List集合演示 * * @author wql * */ class Persons { private String name; private int age; public Persons(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Persons [name=" + name + ", age=" + age + "]"; } } public class ListDemo { public static void main(String[] args) { // TODO 自动生成的方法存根 ArrayList list = new ArrayList(); list.add(new Persons("张三1", 20)); list.add(new Persons("张三1", 20));// 元素可以重复 list.add(new Persons("张三2", 22)); list.add(new Persons("张三3", 23)); list.add(new Persons("张三4", 24)); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); System.out.println(object); } // 删除元素 list.remove(1); // 修改元素 list.set(3, new Persons("张三5", 25)); System.out.println("***********"); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); System.out.println(object); } } }
运行:
总结:
1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
3. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
4. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
相关文章推荐
- C# 数组集合 <一>基本概念(Array&ArrayList&List<T>&SortList&LinkList的实现Code)
- 【集合概述】【迭代器】【Vector中的枚举】【List集合】【LinkList】【ArrayList】
- 黑马程序员_学习笔记:9) 集合框架1:Collection(List、Set)、Iterator、List(ArrayList、LinkedList、Vector)
- 小小的总结一下java异常处理和List、ArrayList、Vector、Set、HashSet、TreeSet集合的简单应用
- Java中的集合List、ArrayList、Vector、Stack(三)
- java基础之集合List-ArrayList、LinkedList、Vector的差别
- Java 集合:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
- 集合詳細學習(包括Vector、ArrayList、List等等的比較與實例)
- jdk集合常用方法分析之ArrayList&LinkedList&以及两者的对比分析
- IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】
- 黑马程序员_学习日记39_604基础加强(垃圾回收、弱引用、集合ArrayList和Hashtable、泛型集合List和Dictionary、var)
- JAVA学习---集合系列---ArrayList、Vector和LinkedList等的差别
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源代码解析
- 集合---ArrayList,LinkedList,Vector
- 集合引入(ArrayList、LinkedList)
- Java——集合框架之ArrayList,LinkedList,迭代器Iterator
- Java--集合体系(ArrayList、Vector、LinkedList)
- 浅析Java中的集合包(ArrayList,LinkedList,Vector, Stack,HashSet,TreeSet,HashMap,TreeMap)
- JAVA集合之---LinkedList、ArrayList与Vector
- List和ArrayList,LinkList的区别