在使用list集合的時候,什麼也不用。 原因:list允許存儲重覆的元素。 在使用set集合的時候,要重寫,equals()方法 和 hashCode() 方法。 願意:set集合 不允許存放相同的元素,而預設比較的是兩個 對象地址的值,這樣,兩個對象恆不等。所以 我們需要重寫equals()方法,
在使用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("寫出完成"); } }