@mrbourne
2017-01-04T01:27:39.000000Z
字数 2090
阅读 1661
JavaWeb
如何使用集合类?
- 若涉及到 堆栈,队列 的操作时,应考虑使用 List 。对于需要 快速插入、删除 元素的需求,应使用 LinkedList ,而对于需要 快速随机访问 元素的需求,应使用 ArrayList 。这应该是由 链表 和 数组 的不同数据结构决定的。
- 对于哈希表的操作,作为 key 的对象要求能正确复写 equals & hashCode 方法。
- 尽量返回接口类型而非实际类型,如返回List而非LinkedList或ArrayList, 这样如果需要将 ArrayList 改为 LinkedList , 客户端的代码就无需改变。
- List 有类似数组下标的操作,且允许有相同的元素存在。Map 是以键值对(key-value)的形式存在,不能存在相同的键。
注意:
特点
可以存放任意数据,内容可以重复,提供高效的插入、删除元素的方法。
常用子类
ArrayList
LinkedList
Vector
Vector 用法同 ArrayList ,而 ArrayList 具有异步处理, 性能高, 非线程安全 的特点。 如果需要线程安全,那么可以选择Vector 。
特点
可以存放任意数据,内容不可重复。
常用子类
HashSet
TreeSet
HashSet 输出时,元素的次序是无序随机的。TreeSet 则是按ANSIC 表由小到大排列的,称为 有序集 。
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替换原值RobertSet<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
异常指在运行阶段可能出现的错误,这样的的错误在编译时无法被检测出。常见的如: 数组越界 、文件找不到。
基本用法
try{//...可能产生异常的代码块}catch(Exception e){//...异常处理部分}finally{//...处理完异常后操作}
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);}}