四、Map集合的两种取出方式 Map集合的取出原理:将Map集合转成Set集合。再通过迭代器取出。 1、Set<K> keySet():将Map中所以的键存入到Set集合。因为Set具备迭代器。所以可以通过迭代方式取出所以键的值,再通过get方法。获取每一个键对应的值。 示例: [java] view plaincopy
- /*
- 每一个学生都有对应的归属地。
- 学生Student,地址String。
- 学生属性:姓名,年龄。
- 注意:姓名和年龄相同的视为同一个学生。
- 保证学生的唯一性。
-
- 思路:1、描述学生类
- 2、定义一个Map集合,存储学生对象和地址值
- 3、获取Map中的元素
- */
-
- import java.util.*;
-
- //描述学生类
- class Student implements Comparable<Student>
- {
- private String name;
- private int age;
- Student(String name,int age)
- {
- this.name=name;
- this.age=age;
- }
- public String getName()
- {
- return name;
- }
-
- public int getAge()
- {
- return age;
- }
-
- //复写hashCode
- public int hashCode()
- {
- return name.hashCode()+age*33;
- }
- //复写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;
- }
-
- //复写compareTo,以年龄为主
- public int compareTo(Student c)
- {
- int num=new Integer(this.age).compareTo(new Integer(c.age));
- if(num==0)
- {
- return this.name.compareTo(c.name);
- }
- return num;
- }
-
- //复写toString,自定义输出内容
- public String toString()
- {
- return name+"..."+age;
- }
-
- }
- class HashMapTest
- {
- public static void main(String[] args)
- {
- HashMap<Student,String > hm=new HashMap<Student,String >();
- hm.put(new Student("zhangsan",12),"beijing");
- hm.put(new Student("zhangsan",32),"sahnghai");
- hm.put(new Student("zhangsan",22),"changsha");
- hm.put(new Student("zhangsan",62),"USA");
- hm.put(new Student("zhangsan",12),"tianjing");
-
- keyset(hm);
- }
-
- //keySet取出方式
- public static void keyset(HashMap<Student,String> hm)
- {
- Iterator<Student> it=hm.keySet().iterator();
-
- while(it.hasNext())
- {
- Student s=it.next();
- String addr=hm.get(s);
- System.out.println(s+":"+addr);
- }
- }
- }
|