在使用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对象要实现的接口们和要重写的方法们的更多相关文章

  1. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  2. javaBean为什么要实现Serializable接口?

    引用:http://jzinfo.javaeye.com/blog/519470 Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这 ...

  3. JAVA中JavaBean对象之间属性拷贝的方法

    JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...

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

    一.继承 1.1.继承概念 将对象的共性抽取出来.提取出一个单独的类. 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一 ...

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

    1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...

  6. 数据库表转换成javaBean对象小工具

    package test.utils; import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; ...

  7. JAVA中JavaBean对象之间拷贝的方法

    JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,有个更简便的方法,他们之间的拷贝可以通过copyPro ...

  8. 03-封装BeanUtil工具类(javabean转map和map转javabean对象)

    package com.oa.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import ja ...

  9. JSP中scope属性 scope属性决定了JavaBean对象存在的范围

    scope属性决定了JavaBean对象存在的范围. scope的可选值包括: ---page(默认值) ---request ---session ---application   1.page范围 ...

随机推荐

  1. Oracle EBS R12 WIP Component Issue&Return Process

    oracleassemblytransactionscomponentsjobsreference 目录(?)[-] 定义BOM 定义Routing 定义WIP Discrete Job 发料 Mat ...

  2. Eclipse全屏及插件下载

    Eclipse全屏插件下载 解压下载的压缩包,将  plugins  文件夹中的  cn.pande.eclipsex.fullscreen_1.0.7.jar  文件拷贝到Eclipse安装目录下的 ...

  3. POJ_2456_Agressive_cows_(二分,最大化最小值)

    描述 http://poj.org/problem?id=2456 有n个小屋,线性排列在不同位置,m头牛,每头牛占据一个小屋,求最近的两头牛之间距离的最大值. Aggressive cows Tim ...

  4. 《C#并行编程高级教程》第7章 VS2010任务调试 笔记

    没有什么好说的,主要是将调试模式下的Parallel Tasks窗体和Parallel Stacks窗体.折腾一下应该比看书效果好.(表示自己没有折腾过) 另外值得注意的是,主线程不是一个任务.所以主 ...

  5. js正则表达式及代码

    //校验是否全由数字组成function isDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn tru ...

  6. Aspose.Words组件介绍及使用—基本介绍与DOM概述

    1.基本介绍 Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XP ...

  7. App集成支付宝

    转自:http://www.cnblogs.com/qianxudetianxia/archive/2012/04/04/2432406.html 手机的在线支付,被认为是2012年最看好的功能,我个 ...

  8. Loadrunner 录制成功,但是脚本并没有产生

    LR 在用IE 录制脚本已经成功,但是结束录制以后,并没有脚本产生,在产生脚本log 中提示: [Net An. Error    (14c8:1cec)] Request Connection: R ...

  9. CefSharp中实现Chrome中jS导出Excel

    [前言] 在博客园闲逛了一年多,平时都是借鉴别人的成功经验,总觉得自己应该分享点什么,但是苦于自己技术有限,平时又不爱写东西,所以一直没有写过任何东西.毕业一年多,在现实工作中遇到各种问题,深切体会到 ...

  10. flume服务的搭建

    搭建前先统一时间,关闭防火墙,使用的jar包版本是1.6.0的 服务配置有两种方式 第一种:具体步骤如下: 1.将jar包传至node1上,解压至根目录 2.更改目录名,使用如下命令:mv apach ...