java序列化、java集合排序、正则

 

java -cp D:\lib\* cn.com.gome.cashier.web.controllers.cacheServicelTest D:\\lib\\spring.xml

 

1,其实当 equals 方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码
2,我们是希望两个对象如果相等,那么在使用 hashSet 存储时也能认为这两个对象相等,比如存放到map对象中

 

*************************************************** java集合 ************************************************************************

LinkedList List、Quene接口 同时表现出了双端队列、栈的用法。功能非常强大

java.util.Stack栈,后进先出      peek()查看堆栈顶部的对象,但不从堆栈中移除它。 
队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高     
双向队列(Deque),是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队和出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则
ConcurrentLinkedQueue  Quene接口
ArrayDeque先进先出  Deque、Queue接口  peek()获取但不移除此队列的头;如果此队列为空,则返回 null。


HashSet Set接口,元素不能重复,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等

HashMap Map接口,key可为null
线程安全ConcurrentHashMap(Map接口)、HashTable
按次序存储LinkedHashMap(HashMap,Map接口)
排序TreeMap Map接口     TreeSet 排序

 arrayList vector线程安全的

 

Collections.sort(list, new Comparator<Entity>(){ compare(Entity o1, Entity o2) 重写该方法,设置比较规则排序 }
TreeSet 可通过比较器排序
Student implements Comparable<Student>    public int compareTo(Student s) 重写该方法,设置比较规则排序
Collections.sort(list, new Comparator<Entity>(){//正序 @Override public int compare(Entity o1, Entity o2) { if(o1.getI() > o2.getI()){ System.out.println(" 1"); return 1; } else if (o1.getI() == o2.getI()){ System.out.println(" 0"); return 0; } else{ System.out.println(" -1"); return -1; } } });

 

 *************************************************** 正则*******************************************************

var regex =  /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]·!#¥(——):;“”‘、,|《。》?、【】[\]]/;
       if(regex.test(groupName)){
         $.messager.alert('提示信息',"分组名称不能包含特殊字符");
         return;
       }
/^(((1[3|8][0-9])|(14[5|7])|(15[^4,\D])|(17[0|5|6|7|8]))\d{8})$/      手机号   
 /^[0-9]+(|-)[0-9]+(|(|-)[0-9]+)+$/       固定电话  
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/     邮箱   
/^[0-9A-Za-z\uFF10-\uFF19\uFF41-\uFF5A\uFF21-\uFF3A\u4e00-\u9fa5\•\· ]+$/     收货人   
/^[A-Za-z0-9\uFF10-\uFF19\uFF41-\uFF5A\uFF21-\uFF3A\u4e00-\u9fa5\(\)\|\{\}\[\]\(\)\——\|\{\}\【\】\-\#\,\,\.\。]+$/      地址   

 

find()对字符串进行匹配,匹配到的字符串可以在任何位置
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.find();//返回true 
Matcher m2=p.matcher("aa2223"); 
m2.find();//返回true 
Matcher m3=p.matcher("aa2223bb"); 
m3.find();//返回true 
Matcher m4=p.matcher("aabb"); 
m4.find();//返回false 


matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true 
Java代码示例: 
Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.matches();//返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功. 
Matcher m2=p.matcher("2223"); 
m2.matches();//返回true,因为\d+匹配到了整个字符串

//^和$的用法
        String a = "3131sasfasd".replaceAll("\\d{2}", "Z");
        String b = "3131sasfasd".replaceAll("^\\d{2}", "Z");//仅替换字符串开头的两个数字
        String c = "3131sdasfasd".replaceAll("sd", "Z");
        String d = "3131sdsfasd".replaceAll("sd$", "Z");//仅替换字符串开头的两个数字

regExAgree = "[`~!@#$%^&*()_+=\\-{}|\\[\\]:\";'<>?,.\\\\/·~!@#¥%……&*()——+\\-={}|【】、:”;’《》?,。/]";//32 //特殊字符 * 重复零次或更多次 + 重复一次或更多次

 

 

*************************************************** java序列化 ************************************************************************

public class Person implements Serializable {
    //本类可以序列化 必须实现 Serializable
    private String name ;
    private int age ;
    public Person(String name,int age){
        this.name = name ; this.age = age ;
    }
    public String toString(){
        return "姓名:" + this.name + ",年龄" + this.age ;
    }
}
public static void main(String[] args) throws Exception{
//        test();
        test2();
    }
    //返序列化取数据
    public static void test2(){
        try{
            File file = new File("D:" + File.separator + "person.ser") ;
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            Person p = (Person)ois.readObject();
            System.out.println(p.toString());
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    //将一个实例对象序列化(只序列化对象的属性值,而不会去序列化什么所谓的方法。)
    public static void test(){
        try{
         //序列化后生成指定文件路径
        File file = new File("D:" + File.separator + "person.ser") ;
        ObjectOutputStream oos = null ;
        //装饰流(流)
        oos = new ObjectOutputStream(new FileOutputStream(file)) ;
        //实例化类
        Person per = new Person("张三",30) ;
        oos.writeObject(per) ;
        //把类对象序列化
        oos.close() ;
        } catch(Exception e){
            e.printStackTrace();
        }
    }

 

posted @ 2018-01-30 17:47  苍天一穹  阅读(344)  评论(0)    收藏  举报