黑马程序员技术交流社区

标题: 关于HashMap,正纠结呢。。。。 [打印本页]

作者: 简★零度    时间: 2013-11-11 22:40
标题: 关于HashMap,正纠结呢。。。。
集合使用过程:
第1步:封装对象
第2步:声明对象
第3步:确定要使用的集合类型
第4步:声明集合
第5步:将声明的对象添加到集合中
第6步:调用集合内对象内属性
在使用HashMap()使用方法产生的疑问:
/*声明集合*/
Map a=new HashMap();
/*将声明的对象添加到集合中*/
是通过    a.put(键 , 值); 的方式添加的,其中的键是自定义的标识,“键”的内容要求是不可重复且是无序的;“值”内存储的是对象,根据万物皆对象的思想,集合也可以看做一个对象,
那么向集合中添加集合时,即: a.put(键, 集合);
问题:在第6步中,我要调用存储在集合中的集中的对象中的属性,该怎么调用?麻烦讲解下下思路,最好附实例。谢谢。。。。。。。。
作者: 李慧声    时间: 2013-11-12 00:32
本帖最后由 李慧声 于 2013-11-12 09:59 编辑

不大明白你这句话是什么意思?调用存储在集合中的集中的对象中的属性?
我的理解应该map中的键或是键所对应的的值的属性是吧?
入果按我理解的话,那其实也不难啊,那么你想要使用键或是值的属性,首先第一步,那你要获取到这些键或是键对应的值吧,这你应该没问题吧,
for(Map.Entry<xx, yy> me : map.entrySet()) {
  xx  key = me.getKey();
  yy  value = me.getValue();
那么 这里就是你所要对key或是value进行的操作了,它有什么属性你就操作什么了,主要是你问的这个问题太泛泛而谈了,要针对具体的东东进行操作就OK。
你获取无论自定义的对象或是其他,对它的属性进行操作还不是简单的事~~~
}

懒得举例子,其实楼入住应该不难想清楚,你一直在对map中的元素进行着操作,这本身就是对该类型的数进行进行的操作而已。
说的比较泛,希望对楼主有用~~
作者: ysunday    时间: 2013-11-12 01:08
1.用keySet()这个方法
    这个方法得到的是key的集合,知道了key的集合,就可以通过HashMap的get方法得到key对应的对象
    的到了对象,就可调用对象的属性了
  1. import java.util.*;
  2. public class Test15{
  3.         public static void main(String[] args){
  4.                 Person p0 = new Person("zhangsan0", 20);
  5.                 Person p1 = new Person("zhangsan1", 21);
  6.                 Person p2 = new Person("zhangsan2", 22);
  7.                 Person p3 = new Person("zhangsan3", 23);
  8.                 HashMap< Integer, Person> hm = new HashMap<Integer, Person>();
  9.                 hm.put(new Integer(0), p0);
  10.                 hm.put(new Integer(1), p1);
  11.                 hm.put(new Integer(2), p2);
  12.                 hm.put(new Integer(3) ,p3);
  13.                 Set<Integer> kys = hm.keySet();//用这个方法或者
  14.                                                                           //entrySet()这个方法你得去看api
  15.                 for(int x : kys){//这里用循环就可以
  16.                         Person p = hm.get(x);//得出person对象
  17.                         String name = p.getName();//调用person的方法
  18.                         int age = p.getAge();//调用方法
  19.                         System.out.println("name: " + name+ " age: " + age);
  20.                 }
  21.                        
  22.         }
  23. }
  24. class Person{
  25.         private String name;
  26.         private int age;
  27.         public Person(String name, int age){
  28.                 this.name = name;
  29.                 this.age = age;
  30.         }
  31.         public void setName(String name){
  32.                 this.name = name;
  33.         }
  34.         public String getName(){
  35.                 return this.name;
  36.         }
  37.         public int getAge(){
  38.                 return this.age;
  39.         }
  40.         public void setAge(int age){
  41.                 this.age = age;
  42.         }

  43. }
复制代码
2,通过entrySet()这个方法,这个方法得到的是Map.Entry<K,V>,是key和alue的一组映射关系。然后进行操作,具体怎么操作,建议你去看毕向东老师的视频,里边详细讲过,
  1.         Set<Map.Entry<Integer, Person>> me = hm.entrySet();
  2.                 for(Iterator<Map.Entry<Integer, Person>> it = me.iterator(); it.hasNext();){
  3.                         Map.Entry<Integer, Person> m = it.next();
  4.                         String name = m.getKey();
  5. int age= m.getValue();
  6.                         System.out.println(name + ":" + age);
  7.                 }
复制代码
这里只写操作对象的那几步




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