HashMap元素存储及排序
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class HashMapSummarize {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
operateObject();
}
public static void operateObject(){
Person person1 = new Person("wuxuejiao", 30);
Person person2 = new Person("zhuyingchun", 28);
Person person3 = new Person("wuxuejiao", 30);
Person person4 = new Person("xiashengbing", 31);
Person person5 = new Person("ningqiang", 89);
Person person6 = new Person("yangwei", 74);
Person person7 = new Person("yangwei", 74);
HashMap<Person, String> hashMap = new HashMap<Person, String>();
hashMap.put(person1, "443212543698789625");
hashMap.put(person2, "150102412589632541");
hashMap.put(person3, "443212543698789625");
hashMap.put(person4, "111111111111111111");
hashMap.put(person5, "222222222222222222");
hashMap.put(person6, "333333333333333333");
hashMap.put(person7, "444444444444444444");
printMap(hashMap);
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
TreeMap<Person, String> treeMap = new TreeMap<Person, String>(hashMap);
printMap(treeMap);
}
public static void printMap(Map<Person, String> map){
Set<Map.Entry<Person, String>> set = map.entrySet();
Iterator<Map.Entry<Person, String>> iterator = set.iterator();
while (iterator.hasNext()) {
Map.Entry<Person, String> mEntry = iterator.next();
System.out.println(mEntry.getKey() + mEntry.getValue());
}
}
}
public class Person implements Comparable<Person>
{
private String name;
private int age;
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
public int compareTo(Person person) {
int num = this.name.compareTo(person.getName());
if(num == 0)
{
return (new Integer(this.age)).compareTo(new Integer(person.getAge()));
}
return num;
}
public int hashCode()
{
// System.out.println(this.name + ".....hashcode");
return this.name.hashCode() + this.age * 72;
}
public boolean equals(Object object)
{
Person person = null;
if(object instanceof Person)
{
person = (Person)object;
}
// System.out.println(this.name+"::"+person.name);
boolean value = (this.name.equals(person.getName()) && this.age == person.age);
return value;
}
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 String toString()
{
return name+ "..." + age;
}
}