A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.itheima;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import java.util.Set;

  7. public class Test12 {

  8.         /**
  9.          *
  10.   題目:编写一个类,在main方法中定义一个Map对象(采用泛型),
  11.   加入若干个对象,然后遍历并打印出各元素的key和value。
  12.   分析:
  13.           1.创建Map对象  
  14.           2.加入若干对象  
  15.           3.遍历Map对象
  16.           4.打印元素key和value

  17. */

  18.         public static void main(String[] args) {
  19.                 //创建Map对象
  20.                 Map<Name,Integer> map = new HashMap<Name,Integer>();
  21.                
  22.                 /**给map添加键值对
  23.                  * map的键(key)不予许重复
  24.                  * HashMap允许一个null键和多个null值,不同步
  25.                  * 如果HashMap的键是自定义的类对象,需要重写hashcode()和equals()
  26.                  * 因为HashMap判断键是否相同的原则是,先判断两个对象的hashcode,在判断equals
  27.                  * 含有hash的集合中,一般都要重新hashcode和equals
  28.                  */
  29.                 map.put(new Name("Tom"), 32);
  30.                 map.put( new Name("Maria"), 21);
  31.                 map.put(new Name("Kite"), 10        );
  32.                 //重写hashcode后不会添加
  33.                 map.put(new Name("Tom"), 10);
  34.                
  35.                 /**
  36.                  * 如果重写hashcode,map.size()是3否则是4;
  37.                  * 如果不重写,也无法直接通过map.get(new Name("Tom")获取对象的值;
  38.                  */
  39.                 System.out.println(map.size());
  40.                
  41.                 /**
  42.                  * 通过获得键的Set集合,然后获得键的Set集合的迭代器,获得每个键(key)
  43.                  * 通过键(key)获得值(value)
  44.                  */
  45.                 Set<Name> set = map.keySet();
  46.                 Iterator<Name> it = set.iterator();
  47.                 while(it.hasNext()){
  48.                         Name key = it.next();
  49.                         Integer value = map.get(key);
  50.                         System.out.println(key+"="+value);
  51.                 }
  52.                
  53.                 /**
  54.                  * 通过获得键值对的Set集合,然后获得键值对的Set集合的迭代器,获得每个键(key)
  55.                  * 值(value)对entry;
  56.                  * 通过entry的getKey()和getValue()方法,获得键(key)和值(value);
  57.                  */
  58.                 Set<Entry<Name, Integer>> entrySet = map.entrySet();
  59.                 Iterator<Entry<Name,Integer>> iterator = entrySet.iterator();
  60.                 while(iterator.hasNext()){
  61.                         Entry<Name,Integer> entry = iterator.next();
  62.                         Name key = entry.getKey();
  63.                         Integer value = entry.getValue();
  64.                         System.out.println(key+"="+value);
  65.                 }
  66.                
  67.                
  68.         }

  69. }
  70. class Name{
  71.         private String name;
  72.         Name(){}
  73.         Name(String name){
  74.                 this.name = name;
  75.         }
  76.         @Override
  77.         public int hashCode() {
  78.                 final int prime = 31;
  79.                 int result = 1;
  80.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  81.                 return result;
  82.         }
  83.         @Override
  84.         public boolean equals(Object obj) {
  85.                 if (this == obj)
  86.                         return true;
  87.                 if (obj == null)
  88.                         return false;
  89.                 if (getClass() != obj.getClass())
  90.                         return false;
  91.                 Name other = (Name) obj;
  92.                 if (name == null) {
  93.                         if (other.name != null)
  94.                                 return false;
  95.                 } else if (!name.equals(other.name))
  96.                         return false;
  97.                 return true;
  98.         }
  99.         @Override
  100.         public String toString() {
  101.                 return "Name [name=" + name + "]";
  102.         }
  103.        
  104. }
复制代码


3 个回复

倒序浏览
程序媛?你好【请无视我
回复 使用道具 举报
迄今为止,我真没怎么见过程序媛,基本都是女汉子
回复 使用道具 举报
你想问什么,最起码写出来吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马