java – TreeSet如何检查重复项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – TreeSet如何检查重复项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1313字,纯文字阅读大概需要2分钟。
内容图文
![java – TreeSet如何检查重复项](/upload/InfoBanner/zyjiaocheng/808/d37e5adb21c64ba084da7122555b8bda.jpg)
我正在检查TreeSet如何检查重复元素并具有以下代码
import java.util.*;
public class TreeDemo{
public static void main(String[] args)
{
new TreeDemo().go();
}
public void go()
{
Song s1 = new Song("song1","artist1");
Song s2 = new Song("song2","artist2");
Song s3 = new Song("song3","artist3");
Song s4 = new Song("song3","artist3");
Set<Song> tree = new TreeSet<Song>();
tree.add(s1);
tree.add(s2);
tree.add(s3);
tree.add(s4);
System.out.println(tree);
}
}
class Song implements Comparable<Song>{
private String title;
private String artist;
public Song(String t, String a)
{
title=t;
artist=a;
}
public String getTitle(){
return title;
}
public int compareTo(Song s){
//Song s = (Song)o;
return title.compareTo(s.getTitle());
}
public String toString(){
return title;
}
}
当我执行此代码时,我得到以下输出
[song1, song2, song3]
我的问题是: –
>即使我没有实现hashCode和equals方法(我确实实现了Comparable接口,因为它是强制性的并且需要保持Set的排序),TreeSet如何确定重复?
>它是否使用Object类默认实现?看起来它使用“标题”字段进行此检查,因为当我添加时将其视为重复但是当我添加它时不会将其视为重复.
谢谢.
解决方法:
TreeSet(或技术上,支持它的TreeMap)仅使用compareTo()函数来比较元素.
它不使用Object的.equals()或.hashCode().而且,如果它使用了它们中的任何一个,那么你的输出就是
[song1, song2, song3, song3]
因为Object的默认实现使用内存地址来测试对象的相等性,而不是它们的成员.
内容总结
以上是互联网集市为您收集整理的java – TreeSet如何检查重复项全部内容,希望文章能够帮你解决java – TreeSet如何检查重复项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。