------- 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();
addLast();
getFirst();
getLast();
获取不改变
removeFirst();
removeLast();
获取并删除
枚举:是Vector特有的取出方式。
枚举和迭代器是一样的,书写复杂,被迭代器取代
泛型
提高了程序的安全性
将运行期遇到的问题转移到了编译期
省去了类型强转的麻烦
泛型类的出现优化了程序设计