黑马程序员技术交流社区

标题: 求解 ,关于HashMap()中,键-----值对的问题 [打印本页]

作者: 杨兴庭    时间: 2013-5-9 20:57
标题: 求解 ,关于HashMap()中,键-----值对的问题
本帖最后由 杨兴庭 于 2013-5-10 11:57 编辑

集合使用过程:
1步:封装对象
2步:声明对象
3步:确定要使用的集合类型
4步:声明集合
5步:将声明的对象添加到集合中
6步:调用集合内对象内属性
在使用HashMap()使用方法产生的疑问:
/*声明集合*/
Map a=new HashMap();
/*将声明的对象添加到集合中*/
是通过    a.put(键 , 值); 的方式添加的,其中的键是自定义的标识,的内容要求是不可重复且是无序的;内存储的是对象,根据万物皆对象的思想,集合也可以看做一个对象,
那么向集合中添加集合时,即: a.put(键, 集合);
问题:在第6步中,我要调用存储在集合中的集中的对象中的属性,该怎么调用?麻烦讲解下下思路,最好附实例。谢谢。。。。。。。。


作者: 风乐    时间: 2013-5-9 22:08
可以一步一步把集合拆开取值啊,代码参考毕老师那个学校有班,班里有学生的那个

import java.util.*;

class Student
{
        private String id;
        private String name;
        Student(String id,String name)
        {
                this.id = id;
                this.name = name;
        }
        public String toString()
        {
                return id+":::"+name;
        }
}
class  Demo
{

        public static void main(String[] args)
        {
                HashMap<String,List<Student>> czbk = new HashMap<String,List<Student>>();

                List<Student> reyu = new ArrayList<Student>();
                List<Student> jiuye = new ArrayList<Student>();

                czbk.put("yureban",reyu);
                czbk.put("jiuyeban",jiuye);

                reyu.add(new Student("01","zhagnsa"));
                reyu.add(new Student("04","wangwu"));
                jiuye.add(new Student("01","zhouqi"));
                jiuye.add(new Student("02","zhaoli"));


                Iterator<String> it = czbk.keySet().iterator();

                while(it.hasNext())
                {
                        String roomName = it.next();
                        List<Student> room = czbk.get(roomName);
                       
                        System.out.println(roomName);
                        getInfos(room);
                }
       
        }
        public static void getInfos(List<Student> list)
        {
                Iterator<Student> it = list.iterator();
                while(it.hasNext())
                {
                        Student s = it.next();
                        System.out.println(s);
                }
        }

        public static void getStudentInfo(HashMap<String,String> roomMap)
        {
                Iterator<String> it = roomMap.keySet().iterator();

                while(it.hasNext())
                {
                        String id = it.next();
                        String name = roomMap.get(id);
                        System.out.println(id+":"+name);
                }
        }
}
作者: 刘学明       时间: 2013-5-9 22:51
直接就能调用的啊 存入的集合元素中有你需要调用的方法 上面的讲解可以了
作者: 、__WSD吴少东    时间: 2013-5-9 23:01
HashMap 集合,
打个比方,可能不恰当

键盘上,都刻有对应的字母,对吧。可是有好多的输入法,比方说日文,或者说英式键盘,他们大致上是有差别的,如果用一个刻有美式键盘字母的键盘敲击一个英式或者日文的输入法,打印出来的字,就不是想要打印的字,因为他们的对应关系,不是你自己所认为的
我说这些的意思是想说,HashMap 就是键和值的对应关系,只要找到键,那值就出来了,

小学没毕业,表达能力不好...见笑了,希望对你有帮助
作者: 黑马龙子    时间: 2013-7-24 21:53
用容器,就像类似与上面的集合使用过程:用一个专门存放数据的类,
class map2<K,V>//泛型,填写你想要的数据类型
{
   private  K key;
   private V value;
   public map2(K k2,V v2){key=k2;value=v2;} //初始化key和value
   public K getKey(){return key;}
   public V getValue(){return value;}
   public void setKey(K key2){this.key=key2;}
   public void setValue(V value2){this.value=value2;}
}   
然后就可以用ArrayList arr=new ArrayList()来添加任意的键值对应的数据了,
当然每次添加都要先map2<object,object> bb=new map2<object,object>();object根据你的实际需要填写不同的数据类型,实在不爽就直接填object吧,arr.add(bb);...........
我是这样思考的,希望能有帮助......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2