/**
- 使用各种set存储多个学生信息
- 问题1:为什么课程名称(String)放入到HashSet、LinkedHashSet都可以保证唯一性,但是学生(Student)
- 放入到HashSet、LinkedHashSet,却无法实现唯一性。
- 问题2:为什么课程名称(String)放入到TreeSet都可以保证唯一性、有序性,但是学生(Student)
- 放入到TreeSet,却直接抛出异常。
- java.lang.ClassCastException: com.bjsxt.set.Student cannot be cast to java.lang.Comparable
- 思考: 是否因为String类是系统类,Student是用户自定义类
- String类应该已经做了某些操作,但是Student类还没有做
- 解答问题1:任意对象放入HashSet、LinkedHashSet等底层结构有哈希表的集合中,必须重写两个方法
- hashCode() equals()
- String类已经重写了这两个方法,而Student类没有重写这两个方法
- 解答问题2:任意对象放入了TreeSet等底层结构是红黑树的集合中,都需要实现Comparable接口,并实现其方法。
- 问题3:Comparable接口至多指定一种规则,如果希望按照更多的排序规则放入TreeSet等集中,该怎么办?
- 解决:可以使用外部比较器Comparator。
*/
Set<Map.Entry<Integer,Student>> entrySet =map.entrySet();Iterator <Map.Entry<Integer,Student>>it = entrySet.iterator();while(it.hasNext()){Map.Entry<Integer,Student> entry= it.next();Student stu = entry.getValue();System.out.println(stu);}