Arraylist和HashMapd的基本用法。及对象流的操作

来源:互联网 发布:excel表格比对2列数据 编辑:程序博客网 时间:2024/05/11 01:28

本实例均采用对象User…使用对象流输入流objectInputStream和对象输出流objectOutputStream进行操作。。。文件流FileinputStreamFileOutPutStream

一、  ArrayList-实现了Serializable,接口。可以操作对象

 

   

    FileOutputStream outStream =new FileOutputStream("E:/1.txt",true); 

    ObjectOutputStream objectOutputStream=newObjectOutputStream(outStream);

    User user=new User();

    user.setPassword("");

    user.setUsername("小红");

   

    User user1=new User();

    user1.setPassword("312");

    user1.setUsername("小明");

   

    User user2=new User();

    user2.setPassword("234");

    user2.setUsername("小花");

    List<User> list=new ArrayList<User>();

    //Serializable,实现了序列化

    list.add(user);

    objectOutputStream.writeObject(list);

   //objectOutputStream.writeObject(null);

    objectOutputStream.flush();

    objectOutputStream.close();

}

 

 

 

           ClassNotFoundException {

       FileInputStream fileInputStream =new FileInputStream("E:/1.txt");

       ObjectInputStream objectInputStream =new ObjectInputStream(

              fileInputStream);

       List<User>list =new ArrayList<User>();

       List obj = null;

       try {

           while (true) {

              if ((obj = (ArrayList)objectInputStream.readObject()) !=null) {

                  System.out.println(obj);

              }

           }

       } catch (IOException e) {

      //注意这儿是抛出了java.io.EOFException异常

的,只是没做处理

       } finally {

           objectInputStream.close();

       }

       for (int i = 0; i < obj.size(); i++) {

           Useruser = (User)obj.get(i);

           System.out.println(user.getPassword());

           System.out.println(user.getUsername());

 

       }

 

 

 

    private Stringusername;

    private Stringpassword;

    public String getUsername() {

       returnusername;

    }

    publicvoid setUsername(String username) {

       this.username = username;

    }

    public String getPassword() {

       returnpassword;

    }

    publicvoid setPassword(String password) {

       this.password = password;

    }

}

ArrayList实现了Serializable接口。。。。。

 

try {

           while (true) {

              if (objectInputStream.readObject() !=null) {

                  List<User> list1=(ArrayList) objectInputStream.readObject();

//此行代码抛出java.io.EOFException异常

                  System.out.println(list1);

              }

         }

 

注:最好不要对User对象直接存取。将其封装在ArrayList等实现了序列号的集合中。。

第二:Map-HashMap

package com.cn.arraylist;

 

import java.io.FileInputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

 

public class ReadUser {

 

   @SuppressWarnings("unchecked")

   publicstatic void main(String[] args) throws IOException,

           ClassNotFoundException{

       FileInputStreamfileInputStream = new FileInputStream("E:/1.txt");

       ObjectInputStreamobjectInputStream = new ObjectInputStream(

               fileInputStream);

       //List<User>list = new ArrayList<User>();

       Objectuser1 = null;

       try{

           while(true) {

               if((user1=objectInputStream.readObject()) != null) {

                   Map<String,User>user=(HashMap<String,User>)user1;//转化成HashMap集合对象

                    Iteratoriterator=user.keySet().iterator();//a set view of the keys contained in thismap

                    while(iterator.hasNext()){

                   //System.out.println(user.get(iterator.next()));

                   Useru=(User)user.get(iterator.next());//迭代输出。转换成User对象

                    System.out.println(u.getPassword()+"  "+u.getUsername());

                    

                    }

                  

               }

           }

       }catch (IOException e) {

       

       }finally {

           objectInputStream.close()

   }

 

 

  FileOutputStream outStream = new FileOutputStream("E:/1.txt",true); 

    ObjectOutputStream objectOutputStream=newObjectOutputStream(outStream);

    User user=new User();

  

    user.setPassword("123");

    user.setUsername("吴密");

    User user1=new User();

    user1.setPassword("312");

    user1.setUsername("小明");

    User user2=new User();

    user2.setPassword("234");

    user2.setUsername("小花");

    Map<String,User> m=new HashMap<String,User>();

    m.put(user.getUsername(), user);

    m.put(user1.getUsername(), user1);

    m.put(user2.getUsername(), user2);

    objectOutputStream.writeObject(m);

    objectOutputStream.flush();

    objectOutputStream.close();

 

HashMap键值不允许重复。。。可以为NULL(空)

第二种遍历HashMap方法:

 

     Iterator it =user.entrySet().iterator();//返回此映射所包含的映射关系的 Set视图。

                while(it.hasNext()){

                     java.util.Map.Entryentry = (java.util.Map.Entry)it.next();

                     // entry.getKey()返回与此项对应的键

                     // entry.getValue()返回与此项对应的值

                    //System.out.println(entry.getValue());

                    //System.out.println(entry.getKey());

                     Useru=(User)entry.getValue();

                    System.out.println(u.getPassword()+""+u.getUsername());

                  }

 


原创粉丝点击