key不能重复,若重复只存第一次的元素;value是否重复不关心
要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
集合的遍历1:使用keySet()
import java.util.*;
class Student{
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge() {
return age;
}
public int hashCode() {
return name.hashCode() + age;
}
public boolean equals(Object o) {
Student s;
if(o instanceof Student) {
s = (Student)o;
if(this.getName().equals(s.getName()) &&
this.getAge() == s.getAge()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("name:");
sb.append(name);
sb.append(",age:");
sb.append(age);
return sb.toString();
}
}
public class HashMapTest {
public static void print1(Map map) {
//把所有的key取出来
Set keys = map.keySet();
//遍历单列集合
Iterator iter = keys.iterator();
String key;
Student value;
while(iter.hasNext()) {
key = (String)iter.next();
value = (Student)map.get(key);
System.out.println(key + "===" + value);
}
}
public static void main(String[] args) {
Map map = new HashMap();
//map.put(key, value);
map.put("100", new Student("Jack",20));
map.put("101", new Student("Jim",18));
map.put("102", new Student("Tom",19));
map.put("103", new Student("Jack",20));
Student value = (Student)map.get("102");
System.out.println("value: " + value);
//遍历map
print1(map);
}
}
集合的遍历2:使用entrySet()
...
public static void print2(Map map) {
//set中存放(key, value)键值对
Set entrySet = map.entrySet();
Iterator iter = entrySet.iterator();
Map.Entry me;
String key;
Student value;
while(iter.hasNext()) {
me = (Map.Entry)iter.next();
key = (String)me.getKey();
value = (Student)me.getValue();
System.out.println(key + "===" + value);
}
}
...
print2(map);