你的位置:首页 > Java教程

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