1. 程式人生 > >Map介面的使用注意事項

Map介面的使用注意事項

注意事項一:不能直接使用迭代輸出Map中的全部內容

使用迭代進行輸出的步驟:

  1. Map介面的例項通過entrySet()方法變為Set介面物件。
  2. 通過Set介面例項為Iteratr例項化。
  3. 通過Iterator迭代輸出,每個內容都是Map.Entry的物件。
  4. 通過Map.Entry進行key-->value的分離。

Map輸出方式一、Iterator輸出Map

importjava.util.HashMap;

importjava.util.Iterator;

importjava.util.Map;

importjava.util.Set;

publicclass outPutMap

1 {

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));

}

}

輸出結果: