【问题标题】:Public class <Generic type> implements Comparable公共类 <Generic type> 实现 Comparable
【发布时间】:2016-08-02 04:56:28
【问题描述】:

我有一个公共类帐户,我想用可比较的方式实施,我的问题如下:

我怎样才能使余额最低的帐户在我的比较中是“最小的”?

public class Account implements Comparable<Account>{
  private double balance;
  private String acctNum;

  public Account(String number, double initBal){
      balance = initBal;
      acctNum = number;
  }
  public double getBalance(){
      return balance;
  }
  .....


 public int compareTo(Account other) {
         ????????
  }

【问题讨论】:

标签: java comparable compareto implements


【解决方案1】:

compareTo 方法必须返回:

  • 如果小于其他,则为负整数,
  • 如果等于其他则为零
  • 如果 this 或大于 other,则为正整数

如果值接近Double.MAX_VALUEDouble.MIN_VALUE,则仅执行return this.balance - other.balance 会给出无效结果,因此您应该使用Double.compare

public int compareTo(Account other) {
    return Double.compare(this.balance, other.balance);
}

【讨论】:

    【解决方案2】:

    最简单的实现方法是使用Double 作为balance 的类型,然后调用compareTo 方法:

    return balance.compareTo(other);
    

    我并不是说这是最好的,但它足以作为一个开始。

    请注意,处理nulls 由您来实现。

    【讨论】:

    • 这不会编译。这不是自动装箱的工作原理。
    • @AndyTurner 它说使用Double。它不会编译,因为other 不是Double
    • @PaulBoddington 它无法编译,因为balancedouble,而不是Double,您不能在double 上调用compareTo
    • @AndyTurner 再次阅读完整答案...这是一个奇怪的答案,但这不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2011-10-31
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多