在使用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