黑马程序员技术交流社区
标题:
【记录】代码练习-HashMap集合
[打印本页]
作者:
Kevin.Kang
时间:
2015-7-17 16:14
标题:
【记录】代码练习-HashMap集合
HashMap<String, String>:
package com.kxg.HashMap;
import java.util.HashMap;
import java.util.Set;
/*
* HashMap:基于哈希表的Map接口实现,哈希表保证了键的唯一性
*
*/
public class HashMapDemo {
public static void main(String[] args) {
// 创建集合对象
// HashMap<String, String>
HashMap<String, String> hm = new HashMap<String, String>();
// 添加元素
hm.put("李延旭", "商丘");
hm.put("任兴亚", "漯河");
hm.put("赵磊", "信阳");
hm.put("王澳", "周口");
hm.put("王澳", "厕所");
Set<String> set = hm.keySet();
for (String s : set) {
String result = hm.get(s);
System.out.println(s + "===" + result);
}
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-17 16:19
本帖最后由 Kevin.Kang 于 2015-7-17 16:35 编辑
HashMap<Integer, String>:
package com.kxg.HashMap;
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo2 {
public static void main(String[] args) {
// 创建集合对象
// HashMap<Integer, String>
HashMap<Integer, String> hm = new HashMap<Integer, String>();
// 添加元素
// 这里的001,002,003因为开头是0,所以代表的就是八进制的数字。
hm.put(001, "商丘");
hm.put(002, "漯河");
hm.put(003, "信阳");
hm.put(004, "周口");
hm.put(005, "厕所");
Set<Integer> set = hm.keySet();
for (Integer s : set) {
String result = hm.get(s);
System.out.println(s + "===" + result);
}
}
}
复制代码
String类和Integer类已经重写了hashCode()和equals()方法。
作者:
Kevin.Kang
时间:
2015-7-17 16:34
本帖最后由 Kevin.Kang 于 2015-7-17 17:00 编辑
HashMap<Person,String>:
package com.kxg.HashMap;
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo3 {
public static void main(String[] args) {
// 创建集合对象
// HashMap<Person,String>
HashMap<Person, String> hm = new HashMap<Person, String>();
// 创建对象
Person p = new Person("李延旭", 20);
Person p2 = new Person("任兴亚", 23);
Person p3 = new Person("赵磊", 19);
Person p4 = new Person("王澳", 20);
//如果不重写hashCode()和equals()方法,这里的对象也会打印出来,HashMap的唯一性依赖的是哈希表
Person p5 = new Person("王澳", 20);
// 添加元素
hm.put(p, "商丘");
hm.put(p2, "漯河");
hm.put(p3, "信阳");
hm.put(p4, "周口");
hm.put(p5, "周口");
Set<Person> set = hm.keySet();
for (Person s : set) {
String result = hm.get(s);
System.out.println(s.getName() + ":" + s.getAge() + "===" + result);
}
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-17 16:36
Person类:
package com.kxg.HashMap;
public class Person {
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name=" + name + ", age=" + age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-20 15:29
HashMap和Hashtable的区别:
Hashtable:线程安全,效率低。不允许null键和null值。
HashMap:线程不安全,效率高。允许
null键和null值。
作者:
huangjiawei
时间:
2015-7-20 16:20
。。。。。。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2