今天,我学习了工具类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的介绍。