码迷,mamicode.com
首页 > 编程语言 > 详细

javabean对象要实现的接口们和要重写的方法们

时间:2016-02-07 17:25:14      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

在使用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("写出完成");
        
    }

}

 

javabean对象要实现的接口们和要重写的方法们

标签:

原文地址:http://www.cnblogs.com/letben/p/5184717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!