关于类 HashMap 遍历方式及HashMap和HashMap
类HashMap : a.基于哈希表Map接口的实现, 此实现提供所有可选的映射操作,并允许使用 null 值和 null 键
b.此类不保证映射的顺序,特别是它不保证该顺序恒久不变,并且该key值不可重复
c.遍历方式: entrySet() iterator
d.此类实现不是同步,所以不安全
/** hashMap 两种遍历方式
hashMap<String,String>和hashMap<Person,Person> 的区别
hashMap<String,String> ,String引用类型是官方定义的,所有它可以应用hashMap的所有方法.
hashMap<Person,Person> ,Person类型时通过put()增加元素时,会出现重复映射,这是就不符合map映射key值不可重复,通过重写person类里的hashcode()和equals()方法*/
import java.util.HashMap;
import java.util.Iterator;
public class HashMapTest {
public static void main(String[] args){
//创建集合对象
HashMap<String,String> h=new HashMap<String,String>();
//创建并增加
h.put("02","李四");
h.put("06","李四");
h.put("03","张三");
h.put("03","三小");
h.put("05","张三");
h.put("A","王五");
h.put("03","三小");
h.put("B","刘鹏");
//遍历集合
//遍历h集合
Iterator<String> io=h.keySet().iterator();
while(io.hasNext()){
String key=io.next();
String value=h.get(key);
System.out.print(key+value+" ");
}
}
}
System.out.println("=====================================HashMap<Person><Person>=========================");
//创建集合
HashMap<Person,Person> hash=new HashMap<Person,Person>();
// //创建person对象
Person ppp1=new Person("张三",10);
Person ppp2=new Person("张三",10);
Person ppp3=new Person("李四",12);
Person ppp4=new Person("李四",10);
Person ppp5=new Person("李四",15);
Person ppp6=new Person("李四",15);
hash.put(ppp1, ppp2);
hash.put(ppp3, ppp4);
hash.put(ppp5, ppp6);
//遍历集合
Iterator<Person> ii=hash.keySet().iterator();
while(ii.hasNext()){
Person key=ii.next();
Person value=hash.get(key);
System.out.print(key.name+key.age);
System.out.print(value.name+value.age);
System.out.println();
}
}
}
//Person类型时通过put()增加元素时,会出现重复映射,这是就不符合map映射key值不可重复,通过重写person类里的hashcode()和equals()方法
System.out.println("=====================================HashMap<Person><Person>=========================");
//创建集合
HashMap<Person,Person> hash=new HashMap<Person,Person>();
// //创建person对象
Person ppp1=new Person("张三",10);
Person ppp2=new Person("张三",10);
Person ppp3=new Person("李四",12);
Person ppp4=new Person("李四",10);
Person ppp5=new Person("李四",15);
Person ppp6=new Person("李四",15);
hash.put(ppp1, ppp2);
hash.put(ppp3, ppp4);
hash.put(ppp5, ppp6);
//遍历集合
Iterator<Person> ii=hash.keySet().iterator();
while(ii.hasNext()){
Person key=ii.next();
Person value=hash.get(key);
System.out.print(key.name+key.age);
System.out.print(value.name+value.age);
System.out.println();
}
}
}
package cn.collection;
public class Person {
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public String toString(){
return "名字"+this.name+"年龄"+this.age;
}
public int hashCode(){
return 0;
}
public boolean equals(Object p){
if(this==p){
return true;
}
if(p instanceof Person){
Person p1=(Person) p;
if((null!=p1.name)&&(this.name==p1.name)){
if(this.age==p1.age){
return true;
}
return false;
}
return false;
}
return false;
}
}