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

HashMap<String, String>:
  1. package com.kxg.HashMap;

  2. import java.util.HashMap;
  3. import java.util.Set;

  4. /*
  5. * HashMap:基于哈希表的Map接口实现,哈希表保证了键的唯一性
  6. *
  7. */
  8. public class HashMapDemo {
  9.         public static void main(String[] args) {

  10.                 // 创建集合对象
  11. //                HashMap<String, String>
  12.                 HashMap<String, String> hm = new HashMap<String, String>();

  13.                 // 添加元素
  14.                 hm.put("李延旭", "商丘");
  15.                 hm.put("任兴亚", "漯河");
  16.                 hm.put("赵磊", "信阳");
  17.                 hm.put("王澳", "周口");
  18.                 hm.put("王澳", "厕所");

  19.                 Set<String> set = hm.keySet();
  20.                 for (String s : set) {
  21.                         String result = hm.get(s);
  22.                         System.out.println(s + "===" + result);
  23.                 }
  24.         }
  25. }
复制代码


5 个回复

倒序浏览
本帖最后由 Kevin.Kang 于 2015-7-17 16:35 编辑

HashMap<Integer, String>:
  1. package com.kxg.HashMap;
  2. import java.util.HashMap;
  3. import java.util.Set;

  4. public class HashMapDemo2 {
  5.         public static void main(String[] args) {

  6.                 // 创建集合对象
  7.                 // HashMap<Integer, String>
  8.                 HashMap<Integer, String> hm = new HashMap<Integer, String>();

  9.                 // 添加元素
  10.                 // 这里的001,002,003因为开头是0,所以代表的就是八进制的数字。
  11.                 hm.put(001, "商丘");
  12.                 hm.put(002, "漯河");
  13.                 hm.put(003, "信阳");
  14.                 hm.put(004, "周口");
  15.                 hm.put(005, "厕所");

  16.                 Set<Integer> set = hm.keySet();
  17.                 for (Integer s : set) {
  18.                         String result = hm.get(s);
  19.                         System.out.println(s + "===" + result);
  20.                 }
  21.         }
  22. }
复制代码
String类和Integer类已经重写了hashCode()和equals()方法。
回复 使用道具 举报
本帖最后由 Kevin.Kang 于 2015-7-17 17:00 编辑

HashMap<Person,String>:
  1. package com.kxg.HashMap;
  2. import java.util.HashMap;
  3. import java.util.Set;

  4. public class HashMapDemo3 {
  5.         public static void main(String[] args) {

  6.                 // 创建集合对象
  7.                 // HashMap<Person,String>
  8.                 HashMap<Person, String> hm = new HashMap<Person, String>();

  9.                 // 创建对象
  10.                 Person p = new Person("李延旭", 20);
  11.                 Person p2 = new Person("任兴亚", 23);
  12.                 Person p3 = new Person("赵磊", 19);
  13.                 Person p4 = new Person("王澳", 20);
  14.                 //如果不重写hashCode()和equals()方法,这里的对象也会打印出来,HashMap的唯一性依赖的是哈希表
  15.                 Person p5 = new Person("王澳", 20);
  16.                 // 添加元素
  17.                 hm.put(p, "商丘");
  18.                 hm.put(p2, "漯河");
  19.                 hm.put(p3, "信阳");
  20.                 hm.put(p4, "周口");
  21.                 hm.put(p5, "周口");

  22.                 Set<Person> set = hm.keySet();
  23.                 for (Person s : set) {
  24.                         String result = hm.get(s);
  25.                         System.out.println(s.getName() + ":" + s.getAge() + "===" + result);
  26.                 }
  27.         }
  28. }
复制代码



回复 使用道具 举报
Person类:
  1. package com.kxg.HashMap;

  2. public class Person {
  3.         private String name;
  4.         private int age;

  5.         public Person() {
  6.                 super();
  7.         }

  8.         public Person(String name, int age) {
  9.                 super();
  10.                 this.name = name;
  11.                 this.age = age;
  12.         }

  13.         public String getName() {
  14.                 return name;
  15.         }

  16.         public void setName(String name) {
  17.                 this.name = name;
  18.         }

  19.         public int getAge() {
  20.                 return age;
  21.         }

  22.         public void setAge(int age) {
  23.                 this.age = age;
  24.         }

  25.         @Override
  26.         public String toString() {
  27.                 return "name=" + name + ", age=" + age;
  28.         }

  29.         @Override
  30.         public int hashCode() {
  31.                 final int prime = 31;
  32.                 int result = 1;
  33.                 result = prime * result + age;
  34.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  35.                 return result;
  36.         }

  37.         @Override
  38.         public boolean equals(Object obj) {
  39.                 if (this == obj)
  40.                         return true;
  41.                 if (obj == null)
  42.                         return false;
  43.                 if (getClass() != obj.getClass())
  44.                         return false;
  45.                 Person other = (Person) obj;
  46.                 if (age != other.age)
  47.                         return false;
  48.                 if (name == null) {
  49.                         if (other.name != null)
  50.                                 return false;
  51.                 } else if (!name.equals(other.name))
  52.                         return false;
  53.                 return true;
  54.         }
  55. }
复制代码



回复 使用道具 举报
HashMap和Hashtable的区别:
                Hashtable:线程安全,效率低。不允许null键和null值。
                HashMap:线程不安全,效率高。允许null键和null值。
回复 使用道具 举报
。。。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马