java吧 关注:1,298,925贴子:12,838,955
  • 3回复贴,共1

Java 每日一题:2016年8月27日

取消只看楼主收藏回复

每天在这里贴一道 Java 题。
问题不难,有 Java 的基本知识就可以做出来。
问题也不偏,日常工作中时不时会碰到。
每日一题索引页:52.36.153.52:8080/javaquestions/

请问输出结果是什么?


1楼2016-08-27 13:18回复
    源程序:
    package javaquestions;
    import java.util.TreeSet;
    public class JavaQuestion20160827
    {
    public static void main(String[] args)
    {
    Drink coffee = new Drink("Coffee");
    Drink tea = new Drink("Tea");
    TreeSet<Drink> drinks = new TreeSet<Drink>();
    drinks.add(coffee);
    drinks.add(tea);
    System.out.println(drinks);
    }
    }
    class Drink implements Comparable<Drink>
    {
    private String name;
    Drink(String name)
    {
    this.name = name;
    }
    @Override
    public int compareTo(Drink o)
    {
    return 0;
    }
    @Override
    public String toString()
    {
    return name;
    }
    }


    2楼2016-08-27 13:19
    回复
      2026-03-08 10:14:07
      广告
      不感兴趣
      开通SVIP免广告
      Set 是用于存放非重复的元素的。如何判断是否重复(是否相等),不同的 Set 有不同的方法。
      对 HashSet,使用 equals() 方法来判断两个对象是否相等。
      对 TreeSet,使用 Comparable.compareTo() 或者 Comparator.compare() 方法来判断两个对象是否相等。当你使用 TreeSet 时,加入的对象的类需实现 Comparable 接口,或者在创建 TreeSet 时,传入一个 Comparator 实例。
      在上面的程序中,TreeSet 中存放的是 Drink 对象。因为类 Drink 没有覆写 equals() 方法,若用 equals 方法比较的话,所有的 Drink 对象都是不相等的。但因为 compareTo() 方法总是返回 0,若用 compareTo() 方法比较的话,所有的 Drink 对象都是相等的。


      7楼2016-08-27 21:34
      收起回复
        10楼2016-08-29 21:36
        回复