您的位置:首页 > 职场人生

黑马程序员——集合框架&List

2013-12-25 17:25 274 查看
------- android培训、java培训、期待与您交流! ----------

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。



集合的分类

1、Collection      一次存一个对象, 单列集合

List         有序的,可重复,有索引

ArrayList        数组实现, 查找快

LinkedList       链表实现, 增删快

Vector        数组实现, 线程安全

Set         不可重复, 没索引

HashSet       使用哈希算法去重复,效率高, 但元素无序

TreeSet        TreeSet是用排序的, 可以指定一个顺序,对象存入之后会按照指定的顺序排列

LinkedHashSet     HashSet的子类,原理相同,除了去重复之外还能保留存储顺序

2、 Map       一次存两个对象,键值对

HashMap       使用哈希算法对键去重复,效率高,但无序

TreeMap       使用二叉树算法排序,可以自定义顺序

LinkedHashMap    使用哈希算法去重复,并且保留存储顺序

Hashtable      类似HashMap,线程安全,效率略低,不允许null键和null值

Properties      Hashtable的子类,用来操作配置文件

集合的常用方法

1,常用方法

add(Object>

List

ArrayList:底层数据结构是数组结构。线程不安全的。所以ArrayList的出现替代了Vector.但是查询的速度很快.。

LinkedList:底层是链表数据结构。线程不安全的,同时对元素的增删操作效率很高

Vector:底层数据结构是数组结构。jdk1.0版本。线程安全的。无论增删还是查询都非常慢.已被ArrayList替代。

可变长度的ArrayList:

ArrayList内部封装了一个默认长度为10的数组。 当超出长度时,集合内部会自动生成一个新的数组。 将原数组中的元素复制到新数组中,在将新元素添加到新数组。

ArrayList 50%延长。

Vector 如果指定了初始容量和溢出量就是每次初始容量加上溢出量,没指定就是100%延长

ListIterator方法

在迭代时,不可以通过集合对象的方法操作集合中的元素。

对于List集合。有一个新的迭代方式。 就是ListIterator 列表迭代器。

ListIterator本身也是Iterator的子接口。并提供了更多的迭代过程中的操作

List>

ListIterator>

li.add(用指定元素添加)

li.set(用指定元素替换)判断一下这个元素是否在集合里,如果在可以替换

boolean li.hasNext()是否有下一个

boolean li.hasPrevious()是否有前一个

li.next()返回下一个元素

li.previous();返回上一个元素

List集合中的特有方法

List>

添加功能:

boolean>

System.out.println(list.get(x));

LinkedList特有方法:

addFirst();

[b]addLast();[/b]

getFirst();

getLast();

获取不改变

removeFirst();

[b]removeLast();[/b]

获取并删除

枚举:是Vector特有的取出方式。

枚举和迭代器是一样的,书写复杂,被迭代器取代

泛型

提高了程序的安全性

将运行期遇到的问题转移到了编译期

省去了类型强转的麻烦

泛型类的出现优化了程序设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: