zoukankan      html  css  js  c++  java
  • javabean对象要实现的接口们和要重写的方法们

    在使用list集合的时候,什么也不用。

    原因:list允许存储重复的元素。

    在使用set集合的时候,要重写,equals()方法 和 hashCode() 方法。

    愿意:set集合 不允许存放相同的元素,而默认比较的是两个 对象地址的值,这样,两个对象恒不等。所以 我们需要重写equals()方法,当再次存入的时候用以判定两个对象到底是不是相等。如果两个对象相等了,那么两个 对象必然应该用有相同的hash值,所以在重写equals() 方法的同时,也要重写hashCode()方法。

    如果要使用Collections.sort() 为我们的对象进行排序的话,那么需要 我们javabean类实现comparable接口,重写 compareTo()方法返回一个int值用以标定两者之间的大小关系。

    或者 写一个类实现Comparator接口,重写某方法,传递对象进来,然后 进行比较,这样在调用的时候 要使用 的 方法就不再是 Collections.sort(myList); 而是 Collections.sort(myList,myComparator);

    对于某些数据对象我们想要存储到文件中,那这些对象应该实现Serializable。唉想到一个事儿,如果 我们存一个 集合的话,就是 现在 不在存储 对象而是 存储一个 集合到文件中那么存放和提取的过程又会有哪些差别?

    跟单独写入单个对象略有不同,这次运行结果里面没有,到运行到文件结尾,这句话,也就是写入list集合到文件里面,在取出的时候,自动帮我们弄到了文件结尾。

    package IOPart;
    
    import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    public class SerializationDemo2 {
        public static void main(String[] args) {
            writePart();
            readPart();
        }
        private static void readPart() {
            ObjectInputStream objectInputStream = null;
            try {
                objectInputStream = new ObjectInputStream(new FileInputStream("f:\tryFile\students2.obj"));
                Object readObject = objectInputStream.readObject();
                List<Student> myList = (List<Student>) readObject;
                for (Student student : myList) {
                    System.out.println(student);
                }
            } catch (EOFException e){
                System.out.println("已经读到文件结尾");
            }catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if(objectInputStream!=null){
                    try {
                        objectInputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
    
        private static void writePart() {
            ObjectOutputStream objectOutputStream = null;
            try {
                objectOutputStream  = new ObjectOutputStream(new FileOutputStream("f:\tryFile\students2.obj"));
                List<Student> myList = new ArrayList<Student>();
                Student student1 = new Student("张三", 18, Gender.男, "一班");
                Student student2 = new Student("李飞", 24, Gender.男, "二班");
                myList.add(student1);
                myList.add(student2);
                objectOutputStream.writeObject(myList);
                objectOutputStream.flush();
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                if(objectOutputStream!=null){
                    try {
                        objectOutputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            System.out.println("写出完成");
            
        }
    
    }
  • 相关阅读:
    Linux下用命令格式化U盘
    ABAP
    [Java 并发] Java并发编程实践 思维导图
    html和css实现一级菜单和二级菜单学习笔记
    小贝_mysql建表以及列属性
    Android.mk具体解释
    Maven之——坐标和依赖(上)
    让 Nginx 支持 WAF 防护功能web防火墙
    EZHTTP首页、文档和下载
    http://www.sshguard.net/
  • 原文地址:https://www.cnblogs.com/letben/p/5184717.html
Copyright © 2011-2022 走看看