标题:关于set方法的使用和Comparator接口的使用
只看楼主
xbanyue
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-4-26
结帖率:0
已结贴  问题点数:20 回复次数:5 
关于set方法的使用和Comparator接口的使用
public class Person implements Comparable{   
    int id;
    int age;
    String name;
    public Person(int id, int age, String name) {
        super();
        this.id = id;
        this.age = age;
        this.name = name;
    }
    public String toString() {
        return "Person [id=" + id + ", age=" + age + ", name=" + name + "]";
    }
    public int compareTo(Object o) {
        Person p;
        if(o instanceof Person) {
            p=(Person)o;
        }else {
            return -1;   
        }
        int diff=this.id-p.id;
        if(diff!=0) {
            diff=diff/Math.abs(diff);
        }
        return diff;
    }   
}
//////////上面的是person类/////////
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Demo  {
    public static void main(String[] args) {
        Set set=new TreeSet();
        Person p1=new Person(1,18,"小明");
        Person p2=new Person(3,17,"小明");
        Person p3=new Person(2,15,"小李");
        set.add(p1);
        set.add(p2);
        set.add(p3);
        System.out.println(set.size());
        Iterator it=set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}
//////下面的是dome类(包含主程序入口)//////////
下面是打印结果
3
Person [id=1, age=18, name=小明]
Person [id=2, age=15, name=小李]
Person [id=3, age=17, name=小明]
我想问的是主程序中是如果调用了person类中的方法啊,定义了person对象,但并没有调用方法,整个程序给我感觉一脸懵的感觉。
搜索更多相关主题的帖子: set Person int age name 
2018-06-13 11:50
Gband
Rank: 1
等 级:新手上路
帖 子:41
专家分:7
注 册:2017-10-13
得分:5 
Treeset类会自动调用
2018-06-14 21:58
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
得分:5 
回复 楼主 xbanyue
程序代码:
package demo;

import static java.lang.System.out;

/*下面是打印结果
3
Person [id=1, age=18, name=小明]
Person [id=2, age=15, name=小李]
Person [id=3, age=17, name=小明]
我想问的是主程序中是如果调用了person类中的方法啊,定义了person对象,但并没有调用方法,整个程序给我感觉一脸懵的感觉。*/
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
@SuppressWarnings("all")
public class Demo  {
    public static void main(String[] args) {
        Set set=new TreeSet();
        Person p1=new Person(1,18,"小明");
        Person p2=new Person(3,17,"小明");
        Person p3=new Person(2,15,"小李");
        set.add(p1);
        set.add(p2);
        set.add(p3);
        System.out.println(set.size());
        Iterator it=set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        
        //person类就是一个普通的类,只不过有个比较属性的方法,返回了属性的差值
        int result = (p2);
        out.println(result);
    }
}
@SuppressWarnings("all")
class Person implements Comparable{    
    int id;
    int age;
    String name;
    public Person(int id, int age, String name) {
        super();
        this.id = id;
        this.age = age;
        this.name = name;
    }
    public String toString() {
        return "Person [id=" + id + ", age=" + age + ", name=" + name + "]";
    }
    public int compareTo(Object o) {
        Person p;
        if(o instanceof Person) {
            p=(Person)o;
        }else {
            return -1;    
        }
        int diff=this.id-p.id;
        if(diff!=0) {
            diff=diff/Math.abs(diff);
        }
        return diff;
    }    
}

假如人生没有梦想,和咸鱼有什么区别!
2018-06-14 22:39
静水且流深
Rank: 5Rank: 5
等 级:贵宾
威 望:11
帖 子:60
专家分:319
注 册:2017-7-7
得分:5 
程序用的是Comparable接口
排序是按照重写的比较规则实现的排序
即compareTo()方法
指定比较器的类型
程序代码:
public class Person implements Comparable<Person>{    
    int id;
    int age;
    String name;
    public Person(int id, int age, String name) {
        super();
        this.id = id;
        this.age = age;
        this.name = name;
    }
    public String toString() {
        return "Person [id=" + id + ", age=" + age + ", name=" + name + "]";
    }
    public int compareTo(Person o) {
        if(o == null) {
            return -1;
        }
        return id - o.id;
    }    
}

不过是爱情,又能走多久
2018-06-14 23:22
壹只小小鸟
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:15
注 册:2018-6-16
得分:5 
好难受,都看不明白你想问什么?
2018-06-16 18:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487859-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.605803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved