2018.3.18周总结

集合框架

一、Map

映射表(也称为关联数组)的基本思想是它维护的是键-值(对)关联,因此你可以使用键来查找值。标准的java类库中包含了Map的几种基本实现。

HashMap

Map基于散列表的实现(它实现了HashTable)。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量和负载因子。以调整容器的性能。

LinkedHashMap

类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快,因为它是用链表维护内部结构。

TreeMap

基于红黑树的实现。查看“键”或者“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。

WeakHashMap

弱键(weak key)映射,允许释放映射所指向的对象;这是为解决某类特殊问题而设计的。如果映射之外没有引用指向某个“键”,则此“键”可以被垃圾回收器回收。

ConcurrentHashMap

一种线程安全的Map,它不涉及同步加锁。

IdentityHashMap

使用==替代equals()对“键”进行比较的散列映射。专为解决特殊问题而设计。 
对Map中使用的键的要求与对Set中的元素的要求一样,任何键都必须具有一个equals()方法;如果键被用于散列Map,那么它必须还具有恰当的hashCode()方法;如果键被用于TreeMap,那么它必须实现Comparable。

有关java集合框架中各接口和类的具体实现方法可以参看以下文章,java集合框架,总结的很详细。

二、有关java集合框架的应用

以上只是简单的介绍了一下java容器的接口和实现类,下面我们通过几个具体的笔试题来深入了解一下java集合框架的使用。

1、java集合框架的层次结构

Collection接口: 

       Set接口:

            HashSet具体类

            LinkedHashSet具体类

            TreeSet具体类

       List接口:  
            ArrayList具体类

            LinkedList具体类

            向量类Vector具体类

            Stack具体类

Map接口: 
       HashMap类

       LinkedHashMap类

       TreeMap类  
三、正则表达式应用实例

校验是否全由数字组成

/^[0-9]{1,20}$/ 
校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/

^[a-zA-Z]{1} 表示第一个字符要求是字母。

([a-zA-Z0-9]|[.]){4,19}表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[.]组成。

异常抛出

  1. package com.lz.ctsframework.core.support;  
  2.   
  3.   
  4. import java.text.MessageFormat;  
  5.   
  6.   
  7. /**  
  8.  *   
  9.  * <b>类说明:</b>Service层统一抛出的异常  
  10.  *   
  11.  * <p>  
  12.  * <b>详细描述:</b>  
  13.  *   
  14.  * @author liuhuanchao  
  15.  * @since 2016-04-18  
  16.  */  
  17. public class ServiceException extends RuntimeException {      
  18.   
  19.   
  20.     private static final long serialVersionUID = 6514891174875747380L;  
  21.   
  22.   
  23.   
  24.   
  25.     /** 异常错误码 **/  
  26.     private String code;  
  27.   
  28.   
  29.     /** 异常描述 **/  
  30.     private String msg;   
  31.     /** 扩展异常描述(包括msg) **/  
  32.     private String extMsg;  
  33.   
  34.   
  35.     /**  
  36.      * ServiceException构造方法,有format字符组  
  37.      * @param errorCode 错误码  
  38.      * @param param     format字符组  
  39.      * @param extMsg    扩展信息,给出具体的错误值信息等  
  40.      */  
  41.     public ServiceException(ErrorCode errorCode,String param[],String ... extMsg) {  
  42.         super(==errorCode ? "" : errorCode.getCode());  
  43.         init(errorCode, param,extMsg);  
  44.     }  
  45.   
  46.   
  47.     /**  
  48.      * ServiceException构造方法,有format字符组  
  49.      * @param errCode  
  50.      * @param paramsList  
  51.      */  
  52.     public ServiceException(ErrorCode errCode, Object... paramsList) {  
  53.         Object[] params = ;  
  54.         if ((paramsList != null) && (paramsList.length > 0)   
  55.                 && ((paramsList[(paramsList.length - 1)] instanceof Throwable)))   
  56.         {  
  57.             Object[] newParam = new Object[paramsList.length - 1];  
  58.             System.arraycopy(paramsList, 0, newParam, 0, newParam.length);  
  59.             params = newParam;  
  60.             super.initCause((Throwable)paramsList[(paramsList.length - 1)]);  
  61.         }  
  62.         else {  
  63.             params = paramsList;  
  64.             super.initCause(null);  
  65.         }  
  66.   
  67.   
  68.         this.code = ==errCode ? "" : errCode.getCode();  
  69.         this.msg = ==errCode ? "" :  MessageFormat.format(errCode.getMsg(),params);    
  70.         this.extMsg = this.msg;  
  71.     }  
  72.   
  73.   
  74.     private void init(ErrorCode errorCode, String param[], String... extMsg) {  
  75.         this.code = ==errorCode ? "" : errorCode.getCode();  
  76.         this.msg = ==errorCode ? "" : MessageFormat.format(errorCode.getMsg(),param);  
  77.         StringBuilder builder = new StringBuilder(100);  
  78.         builder.append(this.msg);  
  79.         if(null != extMsg){  
  80.             for(String ext : extMsg ){  
  81.                 builder.append("[").append(ext).append("]");  
  82.             }  
  83.         }  
  84.         this.extMsg = builder.toString();  
  85.     }  
  86.   
  87.   
  88.     /**  
  89.      *   
  90.      * @param code  错误码  
  91.      * @param msg 描述信息  
  92.      */  
  93.     public ServiceException(String code, String msg) {  
  94.         super(code+":"+msg);  
  95.         this.code = code;  
  96.         this.msg = msg;  
  97.     }  
  98.   
  99.   
  100.     /**  
  101.      * 带Exception的构造方法,传format字符数组  
  102.      * @param errorCode 错误码基类  
  103.      * @param e  异常  
  104.      * @param extMsg    扩展信息,给出具体的错误值信息等  
  105.      */  
  106.     public ServiceException(ErrorCode errorCode, Throwable e,String param[] , String ...extMsg ) {  
  107.         super(==errorCode ? "" : errorCode.getCode(), e);  
  108.         init(errorCode, param, extMsg);  
  109.     }  
  110.   
  111.   
  112.     /**  
  113.      *   
  114.      * @param code 错误码  
  115.      * @param msg 描述信息  
  116.      * @param e  异常  
  117.      */  
  118.     /*public ServiceException(String code, String msg,Throwable e) {  
  119.         super(code+":"+msg, e);  
  120.         this.code = code;  
  121.         this.msg = msg;   
  122.     }*/  
  123.   
  124.   
  125.     /**  
  126.      *   
  127.      *   
  128.      * 方法说明:异常错误码  
  129.      *   
  130.      * @return  
  131.      */  
  132.     public String getCode() {  
  133.         return code;  
  134.     }  
  135.   
  136.   
  137.     /**  
  138.      *   
  139.      *   
  140.      * 方法说明:异常描述信息  
  141.      *   
  142.      * @return  
  143.      */  
  144.     public String getMsg() {  
  145.         return msg;  
  146.     }  
  147.   
  148.   
  149.     public String getExtMsg() {  
  150.         return extMsg;  
  151.     }  
  152.   
  153.   
  154.     @Override  
  155.     public String getMessage() {          
  156.         return super.getMessage() + ","+extMsg;  
  157.     }     
  158.   
  159.   
  160.     public static void main(String[] args) {  
  161.   
  162.   
  163.     }  
  164.   
  165.   
  166. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值