今天,我學習了工具類java.util.包中的幾個平時經常用到的幾個類,例如ArrayList、HashMap、Hashtable等幾個類,在這我總結一下ArrayList的用法。
特徵:允許null在內的所有元素,大致上等同於Vector類,但是他是不同步的。
ArrayList實現的對象非常方便的進行存儲,下面的代碼是能夠非常明顯的顯示出這個類的方便之處。
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import java.util.List;
- public class TestMain {
- /** * @param args */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- List src = new ArrayList(4);
- Userinfo ui1 = new Userinfo();
- ui1.setId(1);
- ui1.setName("aaa");
- src.add(ui1);
- Userinfo ui2 = new Userinfo();
- ui2.setId(2);
- ui2.setName("bbb");
- src.add(ui2);
- System.out.println(src.size());
- List dest = new ArrayList(2);
- TestMain test = new TestMain();
- try {
- dest = test.deepCopy(src); //深拷貝
- }
- catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(src==dest);
- Userinfo u1 = (Userinfo)src.get(0);
- Userinfo u2 = (Userinfo)src.get(1);
- System.out.println(u1.getName());
- System.out.println(u2.getName());
- Userinfo uu = (Userinfo)dest.get(0);
- //uu.setName("dkkdkddk");
- System.out.println(u1.getName());
- System.out.println(u2.getName());
- System.out.println(uu.getName());
- }
- public List deepCopy(List src) throws IOException, ClassNotFoundException{ //將list複製並且翻轉
- ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(byteOut);
- out.writeObject(src);
- ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
- ObjectInputStream in =new ObjectInputStream(byteIn);
- List dest = (List)in.readObject();
- return dest;
- }
- }
這個測試類,實現的內容是把兩個UserInfor對象存儲進去,然後方法deepCopy是把列表反轉複製。
如果想了解反轉的話,可以看一下API中對ObjectOutputStream的介紹。