2011-6-20 JSP正式开课
第二章 用集合存储对象
本章新单词:
collection 集合 key 键
value 值 stack 堆栈
queue 队列 contain 包含,包容
集合(collection)是存储多个元素的容器。
集合用于存储、检索、和操纵数据。
Java的集合也被称为“容器类”;
一、Collection接口
Collection 接口存储一组不唯一、无序的对象。
(1、)List 接口存储一组唯一、有序(插入顺序)的对象。
List集合代表一个有序的集合、允许存在重复的元素、并可以存放null值。
1、ArrayList类是基于数组实现的List类。 实现了可变长度的数组,在内存中分配连续的空间。
随机访问集合元素的性能较好。(按索引访问)删除的性能不高
2、LinkedList类是基于链表实现的List类。
LinkedList是一个双链表的实现。
LinkedList不是一个直接访问的数据结构。
LinkedList插入删除元素时的性能非常出色。(顺序访问)
(2、)Set 接口存储一组唯一、无序的对象。
set集合不允许包含相同的元素。
1、HastSet集合:元素是无序排列的,HashSet类是非线程安全的。允许集合元素是null。
当像HashSet集合中添加元素时,会调用该元素的HashCode()方法得到hashcode()方法得到hashcode值,通过hashCode值决定元素的存储位置
hashcode()方法的作用如下。
为HashCode集合中的元素提供索引
可以提高hashset集合查找元素的效率
2、TreeSet类
TreeSet类是SortedSet接口的实现类,它的集合元素是有序排列的。
常用方法:
方法说明E Ceiling(E e)返回当前set集合中大于等于给定元素的最小元素,如果不存在这样的元素,返回nullE floor(E e)返回当前set集合中小于等于给定元素的最大元素,如果不存在这样的元素,返回nullSortSet<E> subSet
(E fromElement,E toElement)
返回当前set集合的部分视图,其元素范围从fromElement(包括)到toElement(不包括)
比较HashSet类和TreeSet类
HashSet类在添加及查找元素时效率比TreeSet类高。
TreeSet类由于在保存元素时会对元素进行排序,因而时间较慢
当需要对元素进行排序时才使用TreeSet类,否则建议使用HashSet类。
集合的遍历:
(3、)Iterator接口的作用主要是遍历Collection集合中的元素。
常用方法:boolean hasNext(); //判断迭代器是否有元素
E next(); //返回迭代器的下一个元素
void remove(); //将迭代器返回的最后一个元素删除
二、Map接口
存储一组键值对象,提供key到value的映射
1、HashMap类
HashMap类是基于哈希表实现的Map类,HashMap集合的元素是无序排列的。
2、TreeMap类
TreeMap类是基于一个平衡二叉树实现的Map类,TreeMap集合可以对集合中的键进行排序,从而保证元素有序排列
HashMap类和TreeMap类的比较
HashMap适用于在Map中插入、删除和定位元素
TreeMap适用于按顺序对集合元素进行遍历
Eg:
Map<String,String> stuMap = newHashMap<String,String>();
stuMap.put("小艾","小艾的耳朵"); //添加值
Set<String> stuSet =stuMap.KeySet(); //键的集合
for(Stringstu :stuSet){ //遍历每一个键值
System.Out.Println(stuMap.get(stu)); //根据键值获取value值
}
三、排序
Connection.sort(stuList,newComparator<Student>(){
public intcimpare(Student num0 , Student num1){
//return num0.getStuId -num1.getStuId; //int类型的比较
returnnum0.getStuName.compareTo(num1.getStuName); //String类型的比较
}
});
四、List接口中定义的各种常用方法。
返回类型 方法 说明
boolean add(Object o) 在列表的末尾添加元素,起始位置的索引从0开始
Object get(intindex) 返回指定索引位置处的元素
int size() 返回列表中的元素个数
void add(int index,Object o) 在指定的索引位置添加元素
boolean remove(Objecto) 从列表中删除元素
boolean remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始
Object contains(value) 查询元素是否存在
boolean clear() 删除全部数据
五、LinkedList的一些特殊方法
返回类型 方法 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末部添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removedFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素
六、HashMap的一些特殊方法
方法 说明
Objectput(Object key,Objetcvalue) 添加元素
Objectget(Objectkey) 根据key值获取元素(即,得到vlaue值),如果不存在指定的键,返回null
Objectremove(Objectkey) 删除由指定的键映射的“键-值对”
intsize() 返回元素个数
Set keySet() 返回键的集合
Collectionvalues() 返回值的集合
booleancontainsKey(Objectkey) 如果存在由指定的键映射的“键-值对”,返回true
C#中
HashTable 哈希表
添加元素 add(key,value)
值得类型为Object类型,所以当得到一个值时需要类型转换
删除元素 Remove()通过key值删除
删除所有元素 clear()
Collection和Collections的区别
Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法。
Collections是一个包装类,它包含有各种有关集合操作的静态多态方法,此类不能被实例化。
是针对集合类的一个帮助类 ,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。