JavaWeb入门(三) 集合篇
JavaWeb入门(三) 集合篇
标签(空格分隔): JavaWeb
关于集合类
如何使用集合类?
- 若涉及到 堆栈,队列 的操作时,应考虑使用 List 。对于需要 快速插入、删除 元素的需求,应使用 LinkedList ,而对于需要 快速随机访问 元素的需求,应使用 ArrayList 。这应该是由 链表 和 数组 的不同数据结构决定的。
- 对于哈希表的操作,作为 key 的对象要求能正确复写 equals & hashCode 方法。
- 尽量返回接口类型而非实际类型,如返回List而非LinkedList或ArrayList, 这样如果需要将 ArrayList 改为 LinkedList , 客户端的代码就无需改变。
- List 有类似数组下标的操作,且允许有相同的元素存在。Map 是以键值对(key-value)的形式存在,不能存在相同的键。
注意:
- ArrayList 实现了可变大小的数组,它的长度随着元素的增加而变化,且可以存在重复的元素。
- HashMap 允许 null 值, null key, null value 都可以存在。
- Collection 是集合类最基本的接口,所有集合类都继承自 Collection 或其子接口。
- 由于 Collection 具有 性能高、易扩展、已修改 等优点,因此可以用 Collection 实现的不要用数组方式实现。
List
特点
可以存放任意数据,内容可以重复,提供高效的插入、删除元素的方法。
常用子类
***ArrayList
LinkedList
Vector***
Vector 用法同 ArrayList ,而 ArrayList 具有异步处理, 性能高, 非线程安全 的特点。 如果需要线程安全,那么可以选择Vector 。
Set
特点
可以存放任意数据,内容不可重复。
常用子类
***HashSet
TreeSet***
HashSet 输出时,元素的次序是无序随机的。TreeSet 则是按ANSIC 表由小到大排列的,称为 有序集 。
Map
Map 中存放的是 键值对 数据。一个 key 对应一个 value。
例:Map的使用实例
public class UsingMap {
public static void main(String[] args) {
Map<String, String> names = new HashMap<>();
names.put("09-01-01", "Robert");
names.put("09-01-02", "Scarlet");
names.put("09-01-01", "Lucian"); //对于已有的键 09-01-01, 会使用新值Lucian替换原值Robert
Set<String> keySet = names.keySet(); //键集是Set,无重复值
Collection<String> values = names.values(); //值集是Collection,允许重复值出现
//使用迭代器遍历Map的键集
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//使用迭代器遍历Map的值集
Iterator<String> valueIterator = values.iterator();
while (valueIterator.hasNext()) {
System.out.println(valueIterator.next());
}
}
}
输出结果:
09-01-01
09-01-02
Lucian
Scarlet
异常 Exception
异常指在运行阶段可能出现的错误,这样的的错误在编译时无法被检测出。常见的如: 数组越界 、文件找不到。
基本用法
try{
//...可能产生异常的代码块
}catch(Exception e){
//...异常处理部分
}finally{
//...处理完异常后操作
}
throw 与 throws关键字
throws的使用:
public func() throws Exception{
//可能出现异常的函数体
}
public void static main(String[] args){
try{
func(); //可能抛出异常的方法要用try catch 处理
}catch(Exception e){
//...在此处处理异常
}
}
throw 表示直接抛出一个异常
throw的使用
try{
throw new Exception("Some error occurs.");
}catch(Exception e){
System.out.prinln(e);
}
自定义异常类
任何继承自Exception的类都属于自定义异常类。
例
public static class MyException extends Exception{
//必须实现构造方法
public MyException(String _str){
super(_str);
}
}
public static void main(String[] args){
try{
throw new MyException("This is a MyException.")
}catch(Exception e){
System.out.println(e);
}
}