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("写出完成"); } }
上一篇:css浮动--float/clear通俗讲解(转载)


下一篇:Cordova入门系列(二)分析第一个helloworld项目 转发 https://www.cnblogs.com/lishuxue/p/6015420.html