博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java: Set类及子类:TreeSet有序子类,HashSet无序子类:重复元素
阅读量:4457 次
发布时间:2019-06-08

本文共 2029 字,大约阅读时间需要 6 分钟。

Set类及子类:

TreeSet有序子类;

HashSet无序(散列)子类

HashSet子类的内容是没有顺序的,单个元素也不会重复的(对象除外)。

Set
allSet = new HashSet
(); allSet.add("a"); //重复数据 allSet.add("b"); allSet.add("b"); allSet.add("c"); allSet.add("d"); //重复数据 allSet.add("e"); allSet.add("e"); allSet.add("f"); System.out.println(allSet);

  

TreeSet有序:

TreeSet子类实现了SortSet子类(排序)接口,TreeSet接口是可以排序的。

向TreeSet类中添加自定义对象时,该自定义对象需要复写Comparable接口中的CompareTo排序方法,否则会报:类转换异常

java.lang.ClassCastException

可能需要在复写toString()方法,否则打印的时候报错:

[org.conllection.Person@139a55, org.conllection.Person@1db9742, org.conllection.Person@106d69c]

例如:

添加数据时,有一个自定义类:Person类,2个元素,Name(名字),age(年龄),如果用年龄排序,重复年龄会被剔除掉

person:

public class Person implements Comparable
{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "姓名:" + name + ", 年龄:" + age + ""; } public int compareTo(Person o) { // TODO 自动生成的方法存根 if(this.age > o.age) { return 1; }else if(this.age < o.age) { return -1; }else{ return 0; } } }

  

setdemo2:

Set
allSet = new TreeSet
(); allSet.add(new Person("张三",30)); allSet.add(new Person("李四",30)); allSet.add(new Person("王五",31)); allSet.add(new Person("赵六",31)); allSet.add(new Person("田七",32)); System.out.println(allSet);

  

结果如下:

[姓名:张三, 年龄:30, 姓名:王五, 年龄:31, 姓名:田七, 年龄:32]

  

 

所以,应该在Comparable的CompareTo方法里面在判断name是否重复。

修改后:

public int compareTo(Person o) {		// TODO 自动生成的方法存根		if(this.age > o.age)		{			return 1;		}else if(this.age < o.age)		{			return -1;		}else{			//如果age年龄相同需要在判断name,是否重复			return this.name.compareTo( o.name );		}	}

  

 

结果如下:

[姓名:张三, 年龄:30, 姓名:李四, 年龄:30, 姓名:王五, 年龄:31, 姓名:赵六, 年龄:31, 姓名:田七, 年龄:32]

 

转载于:https://www.cnblogs.com/achengmu/p/7469044.html

你可能感兴趣的文章
C++ Primer 第六章 函数
查看>>
交互设计算法基础(3) - Quick Sort
查看>>
Ubuntu各种软件的安装
查看>>
智能社的邀请码
查看>>
算法与分析 统计数字问题和整数因子分解问题?
查看>>
变量提升
查看>>
谜题88:原生类型的处理
查看>>
ajax 415 错误 $.ajax 中的contentType
查看>>
bootstrapValidator 插件
查看>>
【CodeForces】191C Fools and Roads
查看>>
enum hack
查看>>
2017.2.7 开涛shiro教程-第六章-Realm及相关对象(三)
查看>>
Visual Studio 2008切换到设计视图卡死解决办法-Troubleshooting "Visual Studio 2008 Design view hangs" issues...
查看>>
数据库设计范式
查看>>
sql2005-数据库备份方案 (转载)
查看>>
centos中安装jdk的操作
查看>>
此实现不是Win平台FIPS验证的加密算法的一部分
查看>>
Django使用cors解决跨域问题
查看>>
jQuery Ajax 实例 ($.ajax、$.post、$.get)
查看>>
javascript禁用button:原生方式和jQuery方式
查看>>