黑马程序员技术交流社区
标题:
TreeMap中的一点小问题, 求答疑!
[打印本页]
作者:
JinnyZh
时间:
2013-5-17 00:29
标题:
TreeMap中的一点小问题, 求答疑!
本帖最后由 JinnyZh 于 2013-5-17 22:41 编辑
import java.util.Map;
import java.util.TreeMap;
public class TreeMapDemo {
public static void main(String[] args) {
Map<Student, Integer> map = new TreeMap<>();
map.put(new Student(2,"JinnyNg"), 77);
map.put(new Student(1,"JinnyZh"), 33);
map.put(new Student(4,"Jade"), 55);
map.put(new Student(6,"Jinny"), 66);
map.put(new Student(5,"Jolin"), 78);
map.put(new Student(3,"JinnyNg"), 90);
map.put(new Student(3,"JinnyNg"), 88);
System.out.println(map);
}
}
//
class Student implements Comparable<Student> {
private int num;
private String name;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 创建构造函数
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int num, String name) {
super();
this.num = num;
this.name = name;
}
// 重写toString方法
@Override
public String toString() {
// 按照学号的顺序
return "学号" + num + "-" + name;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return this.num - o.num;
}
}
不知道代码有没有复制错误,在HashMap中需要重写hashcode 和equals 方法才能去重复
但是在TreeMap中我什么都没写,他还是自动去重复了啊,什么原因?
作者:
JinnyZh
时间:
2013-5-17 00:34
本帖最后由 JinnyZh 于 2013-5-17 00:36 编辑
如果是这样那么去重复是不是用TreeMap写起来更简洁啊, 只需要实现 Comparable接口就行了, 反正hashSet也是无序的...还要重写hashcode equals
作者:
337091921
时间:
2013-5-17 00:50
treeset不与许元素重复啊,假如
add("黑马",99);
add("黑",100);你用treeset只能输出黑马 100;因为黑马名字相同只输出一个,但是100会把99覆盖。不能全部输出。当集合出入的是一个对象的时候,并且属性不唯一时,hashset有自己的哈希算法,当前面属性相同时,再去调用esquals方法,可以真的保证元素的唯一性。我今天也是刚学的集合,个人这么认为,如有不妥,请谅解
作者:
尖卡斌引
时间:
2013-5-17 10:28
TreeMap集合 底层是 二叉树 数据结构,可以用于给Map集合中的 键 排序。
在这个程序中 你定义的 键 是Student 对象。
map.put(new Student(3,"JinnyNg"), 90);
map.put(new Student(3,"JinnyNg"), 88);
在这里看似new了连个 Student 对象,其时在内存是一个Student对象,
TreeMap 会认为 在底层存储的时候 因为是一样的。
所以在Map中的 键 是相同的,所以后面的 值 会被覆盖。
最终存 的是 Student(3,"JinnyNg"), 88
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2