Map介面的使用注意事項
注意事項一:不能直接使用迭代輸出Map中的全部內容
使用迭代進行輸出的步驟:
- 將Map介面的例項通過entrySet()方法變為Set介面物件。
- 通過Set介面例項為Iteratr例項化。
- 通過Iterator迭代輸出,每個內容都是Map.Entry的物件。
- 通過Map.Entry進行key-->value的分離。
Map輸出方式一、Iterator輸出Map:
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;
publicclass outPutMap
publicstatic void main(String[] args) {
Map<String,String> map = null;
map= new HashMap<String, String>();
map.put("mldn","www.mldn.cn");
Set<Map.Entry<String,String>> allset = null;
allset= map.entrySet();
Iterator<Map.Entry<String,String>> iterator = allset.iterator();
while(iterator.hasNext()) {
Map.Entry<String,String> mEntry = iterator.next();
System.out.println(mEntry.getKey()+ "------->" + mEntry.getValue());
}
}
}
輸出結果:
Map輸出方式二:foreach輸出Map
importjava.util.HashMap;
importjava.util.Map;
public classoutPutMap {
publicstatic void main(String[] args) {
Map<String,String> map = null;
map= new HashMap<String, String>();
map.put("mldn","www.mldn.cn");
for(Map.Entry<String, String> me : map.entrySet()) {
System.out.println(me.getKey()+"------>"+me.getValue());
}
}
}
輸出結果:
注意事項二:直接使用非系統類作為key,需要覆寫改非系統類的equals()和hashCode()方法
importjava.util.HashMap;
importjava.util.Map;
class Person {
privateString name;
privateint age;
publicPerson(String name, int age) {
this.age= age;
this.name= name;
}
@Override
publicboolean equals(Object obj) {
if(this == obj) {
returntrue;
}
if(!(obj instanceof Person)) {
returnfalse;
}
Personp = (Person) obj;
if(this.name.equals(p.name) && this.age == p.age) {
returntrue;
}else {
returnfalse;
}
}
@Override
publicint hashCode() {
returnthis.name.hashCode() * this.age;
}
publicString toString() {
return "姓名:" + this.name + ";年齡"+ this.age;
}
}
public classoutPutMap {
publicstatic void main(String[] args) {
Map<Person,String> map = null;
map= new HashMap<Person, String>();
Person per1 = new Person("張三",30);
Person per2 = new Person("張三",30);
map.put(per1,"zhangsan");
System.out.println(map.get(per2));
}
}
輸出結果: