zoukankan      html  css  js  c++  java
  • JavaWeb入门(三) 集合篇

    JavaWeb入门(三) 集合篇

    标签(空格分隔): JavaWeb


    原文地址

    关于集合类

    如何使用集合类?

    1. 若涉及到 堆栈,队列 的操作时,应考虑使用 List 。对于需要 快速插入、删除 元素的需求,应使用 LinkedList ,而对于需要 快速随机访问 元素的需求,应使用 ArrayList 。这应该是由 链表数组 的不同数据结构决定的。
    2. 对于哈希表的操作,作为 key 的对象要求能正确复写 equals & hashCode 方法。
    3. 尽量返回接口类型而非实际类型,如返回List而非LinkedList或ArrayList, 这样如果需要将 ArrayList 改为 LinkedList , 客户端的代码就无需改变。
    4. List 有类似数组下标的操作,且允许有相同的元素存在。Map 是以键值对(key-value)的形式存在,不能存在相同的键。

    注意:

    • ArrayList 实现了可变大小的数组,它的长度随着元素的增加而变化,且可以存在重复的元素。
    • HashMap 允许 null 值, null keynull 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);
        }
    }
  • 相关阅读:
    ZOJ 3949 Edge to the Root( 树形dp)
    CCF201812-3 CIDR合并
    CF700E E. Cool Slogans
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    BZOJ3238: [Ahoi2013]差异
    BZOJ4566: [Haoi2016]找相同字符
    Codeforces Global Round 1 A~F
    (HDU)1555-- How many days? (多少天)
    (HDU)1491-- Octorber 21st (校庆)
    (HDU)1465-- 不容易系列之一
  • 原文地址:https://www.cnblogs.com/mrbourne/p/9959438.html
Copyright © 2011-2022 走看看