有一个Human类,有两个属性是name和age,要求从控制台输入姓名得到年龄:
首先新建一个Human类,代码如下:
package com.mzzo;
public class Human {
private String name;
private int age;
public Human(){}
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;
}
public Human(int age) {
super();
this.age = age;
}
public Human(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "经查询"+name+"的年龄是:"+age;
}
}
然后再写个运行类,代码如下:
package com.mzzo;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Run {
public static void main(String[] args) {
Human hum = new Human("小明", 22);
Human hum2 = new Human("小李", 23);
Map map = new HashMap();
map.put(hum.getName(), hum);
map.put(hum2.getName(), hum2);
System.out.println("请输入要查询的人的姓名:");
Scanner sca = new Scanner(System.in);
String sname = sca.next();
// 从map中拿出value
Collection values = map.values();
for (Iterator iterator = values.iterator(); iterator.hasNext();) {
Human human = (Human) iterator.next();
// System.out.println(human.getName());
}
// 从map中取出key
Set keys = map.keySet();
for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
String k = (String) iterator.next();
// System.out.println(k);
}
Set entries = map.entrySet();
for (Iterator iterator = entries.iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
String key = (String) entry.getKey();
Human value = (Human) entry.getValue();
// System.out.println("key=" + key + ",value=" + value.getName());
}
String key=sname;
if (map.containsKey(key)) {
System.out.println(map.get(key));
} else {
System.out.println("对不起,您查找的人不存在!");
}
}
}
当然以上的方法不是最优的,只是为了说明Map集合的遍历,其中如果想得到key就用以下方法:
// 从map中取出key
Set keys = map.keySet();
for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
String k = (String) iterator.next();
// System.out.println(k);
}
如果想从Map中得到value可以用以下方法:
// 从map中拿出value
Collection values = map.values();
for (Iterator iterator = values.iterator(); iterator.hasNext();) {
Human human = (Human) iterator.next();
// System.out.println(human.getName());
}
如果既想要Map中的key,又想要Map中的value那就用以下方法遍历:
Set entries = map.entrySet();
for (Iterator iterator = entries.iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
String key = (String) entry.getKey();
Human value = (Human) entry.getValue();
// System.out.println("key=" + key + ",value=" + value.getName());
}
本文出自:陈风阳的博客(http://www.chenfy.com),转载请注明出处,谢谢。