TreeSet 里可以插入重复元素嘛
1)通常set中不能插入重复元素(几乎所有的人都这么说),但是到底什么是重复元素?(和equals方法和hashcode返回值有关嘛)
2)所有的Set实现都是如此嘛,比如HashSet或者TreeSet都是如此嘛?
3)下面的代码是关于一个自定义类VO,我实例化了两个VO,让他们的equals方法,和hashcode方法返回值相同.但是他们还是插入了两次.
返回结果如下
equals:true
hashcode:true
name:1
name:3
2)所有的Set实现都是如此嘛,比如HashSet或者TreeSet都是如此嘛?
3)下面的代码是关于一个自定义类VO,我实例化了两个VO,让他们的equals方法,和hashcode方法返回值相同.但是他们还是插入了两次.
public static void main(String[] args){
Set aset = new TreeSet();
VO avo1 = new VO(1);
VO avo2 = new VO(3);
if(avo1.equals(avo2)){
System.out.println("equals:" + true);
}
if(avo1.hashCode() == avo2.hashCode()){
System.out.println("hashcode:" + true);
}
aset.add(avo1);
aset.add(avo2);
Iterator it = aset.iterator();
while(it.hasNext()){
VO show = (VO)it.next();
System.out.println(show.toString());
}
}
public class VO implements Comparable{
private int name;
public VO(int name){
this.name = name;
}
@Override
public boolean equals(Object obj) {
VO vo = (VO)obj;//比较余数
if(this.hashCode() - vo.hashCode()==0){
return true;
}
return false;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return name%2;//取余数
}
@Override
public int compareTo(Object obj) {
return this.name - ((VO)obj).name;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "name:" + name;
}
}
返回结果如下
equals:true
hashcode:true
name:1
name:3
...全文
相关推荐
019SetsLab2
019SetsLab2
TreeSet判断重复元素解析及代码示例
主要介绍了TreeSet判断重复元素解析及代码示例,具有一定借鉴价值,需要的朋友可以参考下
Java—Set集合详解(HashSet/LinkedHashSet/TreeSet/EnumSet)
Set集合介绍 Set集合的概念 Set集合类似于一个容器,程序把很多对象保存到Set集合中,Set集合对添加顺序不记录,当有重复的对象保存到Set集合时,不会新增后加的重复对象。 Set集合的特点 Set集合无重复元素,add()方法添加相同元素时,返回false; Set集合add()方法不记录顺序; HashSet类 HashSet介绍 HashSet是按照哈希算法进行存储元素的,具有良好的查询和存取性能。 HashSet特点 集合元素值可以为null; 不保证元素的排列顺序,有可能排列顺序与添加顺序不同; 非同步集合,多线程访问HashSet时,是不安全的,需要通过同步代码保证
HashSet和TreeSet_围墙之外
HashSet和TreeSet_围墙之外.rar
详解Java中HashSet和TreeSet的区别
主要介绍了详解Java中HashSet和TreeSet的区别的相关资料,需要的朋友可以参考下


Java SE
