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

    }

}
时间: 2024-10-23 09:44:30

javabean对象要实现的接口们和要重写的方法们的相关文章

黑马day14 监听器之javaBean对象的活化和钝化

javaBean对象的活化和钝化: 如果将一个属性如String类型的字符串放到session域中,或者一个Person类放到session域中,要想实现session的钝化和活化,则这个javaBean必须实现Serializable接口... 1.javaBean Person package cn.itheima.domain; import java.io.Serializable; import javax.servlet.http.HttpSessionActivationListe

javaBean为什么要实现Serializable接口?

Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了.这一点甚至在跨网络的环境下也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异.也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建.你不用担心在不同的平台上数据是怎样表示的,byte顺序怎样,或者别的什么细节. 对象序列化本身就非常有趣,因

[转]javaBean为什么要实现Serializable接口?

Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了.这一点甚至在跨网络的环境下也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异.也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建.你不用担心在不同的平台上数据是怎样表示的,byte顺序怎样,或者别的什么细节. 对象序列化本身就非常有趣,因

利用Java反射实现JavaBean对象相同属性复制并初始化目标对象为空的属性的BeanUtils

有时遇到将数据传输对象转换成JSON串会将属性值为空的属性去掉,利用Java反射实现JavaBean对象数据传输对象的相同属性复制并初始化数据传输对象属性为空的属性,然后转换成JSON串 package com.banksteel.util; import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Arrays;import java.ut

跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)

PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类. 接口正是解决每个类只能继承一个父类这个问题的 接口用什么权限,继承的那个方法也要使用什么权限. 接口的声明使用:interface 接口的继承使用:implements 目录++++++++++++++++++++++++++++++++++++++++++++ 00x1 接口的声明以及接口的引用(案例一) 00x2 如何继承多个接口(案例二) 00x3 判断某个对象是否实现了某个接口(案例三) +++++++

有两个地方,用到了javabean对象和属性字符串值之间的转换

1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 3.另一个是,mybatis中javeBean对象与数据库字段值之间的转换. 在sql语句的insert/update/delete语句传入javaBean对象,用#{}转换为具体的属性 在sql语句的select中,将数据库中的字段转换为javaBean的属性值. 4.只要发生javaBean的

map的数据创建任意类的JavaBean对象

1.需要的jar包: itcast-tools-1.4.jar     http://pan.baidu.com/s/1Dbo2i commons-beanutils-1.8.3.jar    http://pan.baidu.com/s/1Dbo2i commons-logging-1.1.1.jar  http://pan.baidu.com/s/1c0yefK0 2.map的数据创建任意类的JavaBean对象 T toBean(Map, Class<T>):把Map转换成指定类型的Be

基础学习day07---面向对象三---继承,接口与 抽象类

一.继承 1.1.继承概念 将对象的共性抽取出来.提取出一个单独的类. 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法通过 extends 关键字让类与类之间产生继承关系. 让类和类之间产生了关系,有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属关系才可以继承,所属关系是 is  a.的关系 1.2

如何快速通过json构建javabean对象(Intellij IDEA--&gt;GsonFormat使用教程)

和第三方对接的时候,返回给我们的json时参数字段多是很常见的现象,所以我们手动去创建javabean肯定是要花费不少时间,博主在网上找到了很多种,可用通过json自动生成javabean的工具,这里简单的介绍一下Intellij IDEA 中的插件GsonFormat. 1.什么是GsonFormat 将json数据格式转换为javabean对象的as插件. 2.快捷键 Ctrl+ALT+S,或settings -->Plugins -->输入GsonFormat   install plu