TreeSet去掉重复对象

java对象除了采用equals和hashCode判断对象是否相等外,开发人员也可以通过其他属性判断两个对象是否相等

以下案例采用TreeSet去掉重复对象

Teacher:

public class Teacher{
    private String name;
    private Integer age;
    public Teacher(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

TreeSetTest:

public class TreeSetTest{
    public static void main(String[] args) {

        TreeSet<Teacher> set=new TreeSet<Teacher>(new Comparator<Teacher>() {
            @Override            //通过姓名和年龄判断对象是否相等
            public int compare(Teacher o1, Teacher o2) {
                if(o1.getAge()>o2.getAge()){
                    return 1;
                }else if(o1.getAge()<o2.getAge()){
                    return -1;
                }else{
                    if(o1.getName().compareTo(o2.getName())>0){
                        return 1;
                    }else if(o1.getName().compareTo(o2.getName())==0){
                        return 0;
                    }else{
                        return -1;
                    }
                }
            };
        });
        Teacher p1=new Teacher("小学",20);
        Teacher p2=new Teacher("初中",20);
        Teacher p3=new Teacher("高中",20);
        Teacher p4=new Teacher("初中",20);
        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p4);
        Iterator<Teacher> iterator = set.iterator();
        while(iterator.hasNext()){
            Teacher teacher = iterator.next();
            System.out.print(teacher.getName()+"  ");
        }
    }

}

结果输出:

  初中  小学  高中

原文地址:https://www.cnblogs.com/weishao-lsv/p/8144891.html

时间: 2024-10-10 09:19:29

TreeSet去掉重复对象的相关文章

$.unique() 对象组成的数组去掉重复对象

发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用 1 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'},{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'}] 假设用 arr = $.unique(arr),这种方法处理一下,去掉重复的对象,结果返回的还是arr 原来的

java:Set对象TreeSet有序子类,HashSet无序子类,重复对象二

TreeSet有序子类; HashSet无序子类 重复重复元素,Object对象是通过equals和hashCode来进行过滤的. 如果将上一篇提到中的例子中的TreeSet,换成HashSet,那么代码就不会过滤从的对象 HashSet无序子类,如何过滤重复的对象呢?(单个元素是可以过滤,但相同的对象不会) Person: public class Person implements Comparable<Person> { private String name; private int

js 去掉数组对象中的重复对象

在数组对象中去掉重复的对象: export function deteleObject(obj) { var uniques = []; var stringify = {}; for (var i = 0; i < obj.length; i++) { var keys = Object.keys(obj[i]); keys.sort(function(a, b) { return (Number(a) - Number(b)); }); var str = ''; for (var j =

Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序)

1. TreeSet存储自定义对象并遍历练习1(自然排序): (1)Student.java: 1 package cn.itcast_05; 2 3 /* 4 * 如果一个类的元素要想能够进行自然排序,就必须实现自然排序接口 5 */ 6 public class Student implements Comparable<Student> { 7 private String name; 8 private int age; 9 10 public Student() { 11 super

Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)

1. TreeSet存储自定义对象并遍历练习2: (1)Student.java 1 package cn.itcast_06; 2 3 /* 4 * 如果一个类的元素要想能够进行自然排序,就必须实现自然排序接口 5 */ 6 public class Student implements Comparable<Student> { 7 private String name; 8 private int age; 9 10 public Student() { 11 super(); 12

图解:Set检查是否为重复对象的策略

反思:为什么要先通过先检索hashcode是否相等呢? 查看Hashset的底层源代码:它其实是调用HashMap,而HashMap底层是通过数组维护数据,你想想,如果你的数据是1000万条,每次添加了的时候,你都和所有的元素进行比较,那为了维护不重复,你插入的成本得有多高!!!!太可怕了,!!所以通过引入Hashcode,转换一下,把它作为下标,然后在检查一下这里面存的元素是否想等,用equals比较.下面这段话,如果你暂时看不懂没有关系,我也是自己写了一个Hash表,在查看HashMap,我

多表合并且去掉重复项

数据库问题:多个表中合并去掉重复项 两个表合并起来,去掉某行相同的项,正好把多表查询系统复习一下: 多表查询 (也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征.select 表1.字段名1,表2.字段名2,...from 表1,表2where 连接条件SQL-92标准所定义的FROM子句的连接语法格式为:FROM 表名 joi

js-数组中去掉重复的

关于一个固定的已知的数组例如:var arr = ['name','OK','123','n','look','777','n','123','name',1,3,5,1,'OK']; 那么问题来了,我们怎么能去掉重复的字符串或者数字,得到新的数组呢! 方法①: function takeRepetition_1(arr){ var data= {};  //这里会遍历data的arr[i]属性 因为data为空 理所当然返回undefined var result = []; for(var

数组去掉重复值

1.一维数组 array_unique(); 2.二维数组 //todo 二维数组去掉重复值class array_table { function array_unique_fb($array2D) { foreach ($array2D as $v) { $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重复的字符串,也就是重