Map集合和TreeSet集合的使用:自定义比较器

来源:互联网 发布:秦岚演技知乎 编辑:程序博客网 时间:2024/06/11 16:05
<pre name="code" class="java">/**每一个学生都是有对应的归属地‘有自己的姓名和年龄注意,姓名和年龄相同者视为同一学生保证学生唯一性描述学生,将学生作为键,地址作为值,存入Map集合。   然后再获取学生。<pre name="code" class="java">将学生对象作为Map集合实例对象的参数传递。
import java.util.*;class MapAboutStudentInfo {public static void main(String[] args) {HashMap<Student,String> maps=new HashMap<Student,String>();maps.put(new Student(23,"zhangsan"),"beijing");maps.put(new Student(30,"lisi"),"shanghai");maps.put(new Student(17,"wangwu"),"tianjing");Set<Map.Entry<Student,String>> entryset=maps.entrySet();Iterator<Map.Entry<Student,String>> it=entryset.iterator();while (it.hasNext()){Map.Entry<Student,String> entry=it.next();Student key=entry.getKey();String value=entry.getValue();System.out.println(key+"=="+value);}}}class Student implements Comparable<Student>{private int age;private String name;Student(int age,String name){this.age=age;this.name=name;}public int getAge(){return age;}public String getName(){return name;}//复写hashCode方法public int hashCode(){return name.hashCode()+age*34;}//复写toString方法public String toString(){return name+":"+age;}//复写equals方法public boolean equals(Object obj){if (!(obj instanceof Student))throw new ClassCastException("类型不匹配。");Student s=(Student)obj;return this.name.equals(s.name)&&this.age==s.age;}public int compareTo(Student s){int num= new Integer(this.age).compareTo(new Integer(s.age));if (num==0)return this.name.compareTo(s.name);return num;}}

0 0
原创粉丝点击