在users中,放了username-->UserInfo的组合,通过Iterator 将其中的所有对象取出. 例:
HashMap map = new HashMap();
map.put("James","123-345-5555");
map.put("Wang Ming", "233-333-3232");String phone = (String)map.get("James");

解决方案 »

  1.   

    map.put("James","123-345-5555");James是key  123-345-5555 是valueusers.entrySet() 得到Map.Entry(把map中的每一组(key,value)都封装成 Map.Entry类型)的集合.iterator();把得到的集合放到迭代器中it.next()从迭代器中取出entity.getValue();取出entity中的 value
      

  2.   

    关注ing,顺便问一下,谁知道HashMap的运行效率如何?
      

  3.   

    多谢 helpall、moumouren
    现将此bean代码贴上来,版权不是我的,望作者莫怪,大家共同研究
    我只知是得道在线用户的,具体怎么得的我不太清楚,还清helpall、moumouren赐教
    package oa.online;import java.util.*;public class OnlineState
    {
        static private OnlineState instance;
        private HashMap users;
        private int timeout;    public void setUserInfo(int userId, String username, int departmentId, String departmentName)
        {
            users.put(new Integer(userId), new UserInfo(userId, username, departmentId, departmentName, new Date()));
        }    public boolean isOnline(String username)
        {
            boolean cotained =false;
            Iterator it = users.entrySet().iterator();
            while(it.hasNext())
            {
                UserInfo user = (UserInfo)((Map.Entry)it.next()).getValue();
                if(user.username.equals(username)&&(System.currentTimeMillis() - user.time.getTime())/1000 < timeout)
                {
                    cotained = true;
                    break;
                }
            }
            return cotained;
        }    public Object[] getOnlineUserInfos()
        {
            Iterator it = users.entrySet().iterator();
            ArrayList list = new ArrayList();
            while(it.hasNext())
            {
                UserInfo user = (UserInfo)((Map.Entry)it.next()).getValue();
                if((System.currentTimeMillis() - user.getTime().getTime())/1000 < timeout)
                {
                    list.add(user);
                }
            }
            return list.toArray();
        }    public boolean isOnline(int userId)
        {
            return users.containsKey(new Integer(userId))&& (System.currentTimeMillis() - ((UserInfo)users.get(new Integer(userId))).time.getTime())/1000 < timeout;
        }    public int getTimeout()
        {
            return timeout;
        }    public void setTimeout(int timeout)
        {
            this.timeout = timeout;
        }    static public OnlineState getInstance()
        {
            if (instance == null)
            {
                instance = new OnlineState();
            }
            return instance;
        }    private OnlineState()
        {
            users = new HashMap();
            timeout = 600;
        }    public class UserInfo
        {
            private int userId;
            private int departmentId;
            private String departmentName;
            private String username;
            private Date time;        public int getUserId()
            {
                return userId;
            }        public int getDepartmentId()
            {
                return departmentId;
            }        public String getDepartmentName()
            {
                return departmentName;
            }        public String getUsername()
            {
                return username;
            }        public Date getTime()
            {
                return time;
            }
            public UserInfo(int userid, String username, int departmentId, String departmentName, Date time)
            {
                this.userId = userid;
                this.username = username;
                this.departmentId = departmentId;
                this.departmentName = departmentName;
                this.time = time;
            }
        }
    }
      

  4.   

    你想知道什么呢?
    在HashMap中放了userId和userInfo的组合,用OnlineState就可以得到所有的情况.
      

  5.   

    helpall
    我对这个bean还不太理解,可能还包括一些bean的知识。如下:
    1。OnlineState类中为什么又直接内含了UserInfo类,可不可以或者是不是应该把UserInfo直接写出来呢?
    2。 UserInfo类中最下面的代码:   public UserInfo(int userid, String username, int departmentId, String departmentName, Date time)  {... }
    我好像没见过这种写法呀
    2。接着,这句代码:UserInfo user = (UserInfo)((Map.Entry)it.next()).getValue();
    实例化UserInfo类时怎么实例化成这样了?不大懂
    3。Map直接可以用吗?是什么关键字?
    4。最后,能从数据流程上给我写一下吗?比方说,现在就有4用户:user1,user2,user3,user4,分别对应的名字是name1,name2,name3,name4,怎么样就利用HashMap,getOnlineUserInfos()方法中的Iterator 、Map返回了Object[] ?(代码:if((System.currentTimeMillis() - user.getTime().getTime())/1000 < timeout我懂,不用解释了))多谢,还问了这么多问题,分却比较少啊
      

  6.   

    1。OnlineState类中为什么又直接内含了UserInfo类,可不可以或者是不是应该把UserInfo直接写出来呢?
    ======>一般放在内部的类只是给自己用的,内部的类可以存取私有的变量. 你这种情况有点不符. 当然可以写在外部.
    2。 UserInfo类中最下面的代码:   public UserInfo(int userid, String username, int departmentId, String departmentName, Date time)  {... }
    我好像没见过这种写法呀
    =======>这是最普通的构造函数啊. 眼花了吧. :-)
    2。接着,这句代码:UserInfo user = (UserInfo)((Map.Entry)it.next()).getValue();
    实例化UserInfo类时怎么实例化成这样了?不大懂
    =======>分开写就是
    Object obj = it.next();
    Map.Entry en = (Map.Entry)obj;
    Object obj1 = en.getValue();
    UserInfo user= (UserInfo)obj1;
    3。Map直接可以用吗?是什么关键字?
    =====> 不行. Map只是一个接口. 不懂你的第二问.
    4。最后,能从数据流程上给我写一下吗?比方说,现在就有4用户:user1,user2,user3,user4,分别对应的名字是name1,name2,name3,name4,怎么样就利用HashMap,getOnlineUserInfos()方法中的Iterator 、Map返回了Object[] ?(代码:if((System.currentTimeMillis() - user.getTime().getTime())/1000 < timeout我懂,不用解释了))
    =====> 所有的数据都放到了一张表中:
       1----(USER1,NAME1)
       ...
       4----(USER4,NAME4)
    Iterator it = users.entrySet().iterator();中users.entrySet()得到一个集合,内有(1,2,3,4), iterator()是用来遍历的(不知中文是否翻译成这样).再结合上面的解释,就不难理解了.
      

  7.   

    太谢谢了,你真是我的楷模呀
    我明白了
    主要是我对java还没有非常完整的学习,也就是直接针对j2ee项目中用到的东东学了学,所以对这些很程序的东东(姑且这么叫)我就不很了解了,
    现在买了《thinking in java2》和〈effective java〉开始苦读呀,java还是很深的
    不知大吓能够提点什么建议呀
    分绝对给
      

  8.   

    学-->练-->问-->....>成!