Java集合框架
1. Java集合类概述
a. 处理多个相同数据我们采用数组,但数组空间固定不能动态增长,插入或删除元素比较麻烦。我们使用集合来解决这个问题
b. 集合特点:元素类型可以不同、集合长度可变、空间不固定
c. Java中对一些数据结构和算法进行了封装即集合。集合也是一种对象,用于存储、检索、和传输对象
d. JCF(Java Collections Framework)集合框架。它提供了用于管理集合的接口和类
A. 集合(Collection)接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。定义了Collection对象共有的一些基本方法,这些方法分为基本操作、批量操作和数组操作
B. Iterator接口是一种用于遍历集合的接口。所谓遍历,是指从集合中取出每一个元素的过程
3. List接口:一列数据,数据内容可以重复,以元素安插的次序来放置元素,不会重新排列
A. List接口的实现类具有共同的方法:
add() :向集合中添加元素(增)
remove() :将元素从集合中移除(删)
get() : 从集合中获取元素(查)
set():修改集合中的元素(改)
size() :查看集合长度
a. ArrayList:使用最广泛,集合元素增加或删除操作不频繁时使用。最适合查询
b. LinkedList:当需要在集合的中间位置,频繁增加或删除元素时使用
c. Vector:与ArrayList类似,但Vector是线程安全的,所以性能要低于ArrayList
4. 泛型:由于集合中保存的元素都是Object类型,当一个元素从集合中取出来后都是Object类型的对象,所以我们必须对其进行强制类型转换。为了解决这种麻烦,JDK1.5中提供了一种新的处理方式泛型。
如:List<String> list = new ArrayList<String>();
在JDK1.5中增加了一种新型的循环,称之为for each循环,该循环大大简化了对于集合的遍历操作
如:for(String a : list){
System.out.println(a);
}
6. Set接口:一列数据,数据内容不能重复,使用自己内部的一个排列机制放置元素
A. Set接口的实现类具有共同的方法:
add() :向集合中添加元素(增)
remove(Object o) :将元素从集合中移除(删)
size():查看集合长度
a. HashSet:速度快,不排序
b. TreeSet:速度慢,排序
7. Map接口:一列数据对,使用自己内部的一个排列机制放置元素
A. Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。每个条目包括单独的两部分 :
key
Value
B. 在Map中不允许出现重复的键.
put():将键值对存入集合
get():根据键取出元素的值
keySet():将Map中的所有键取出形成一个Set
values():将Map中的所有值取出形成一Collection
remove():根据键移除值
a. HashMap:速度快,不排序
b. TreeMap:速度慢,排序
8.工具类Collections和Arrays
A. Java集合框架中提供了一个操作Set、List和Map等集合的工具类Collections,该工具类中提供了大量方法,用于对集合元素进行排序、查询、修改等操作
B. Java集合框架同时也提供了Arrays类用于操作数组。Arrays类包含用来操作数组(比如排序和搜索)的各种方法
9. 古老的集合类与接口
A. Vector、Hashtable、Stack、Properties类以及遍历器Enumeration接口
B. Vector(向量)与ArrayList的用法几乎完全相同,二者之间的最大区别在于Vector类是线程安全的,而ArrayList不是
C. Hashtable与HashMap的用法也几乎相同,二者的关系完全类似于Vector与ArrayList的关系。Hashtable是线程安全的,而HashMap不是。 此外,Hashtable不允许key和value为null,而HashMap是允许的
D. Properties到现在还被频繁使用的一个类。该类用于处理属性文件。所谓属性文件就是将Map形式的键/值对数据存在一个扩展名为“.properties”的文本文件中,常用作软件的配置文件