最近在工做的時候,有一個小需求,須要複製List的內容,而後會改變其中的數據,可是試了幾種複製的方法,都是將原有的數據和複製後的數據都改變了,都沒有達到我想要的效果。
其中涉及到了 「淺複製」和「深複製」的概念,這裏很少說,能夠參考這篇淺複製和深複製。我只記錄了這一個深複製的代碼,網上找的其它的深複製,好像不起做用。下面是代碼:ui
/** * 深度拷貝 * @param src * @param <> * @return * @throws IOException * @throws ClassNotFoundException */ public static <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(src); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); @SuppressWarnings("unchecked") List<T> dest = (List<T>) in.readObject(); return dest; }
工做中記錄一下,下次方便使用。.net