java - 不同类型的比较

标签 java comparator comparable

在实现比较器接口(interface)以实现对象的自然排序时:

假设我们有类帐户:

class Account
{
   Account(String name, int id) 
   int balance() 
   void deposit(int n)
}

我们想对两个账户的账户余额进行排序

这两种方法有什么区别?

public class comparebalances implements Comparable <Account>
{

     public int compare (Account acc1, Account acc2)
     {
       return acc1.balance()-acc2.balance();
     }

}

public class comparebalances implements Comparable <Account>
{

     public int compare (Account acc1, Account acc2)
     {
         if (acc1.balance()> acc2.balance())
            return 1;
         else if (acc1.balance()< acc2.balance())
            return -1;
         else if (acc1.balance()==acc2.balance())
            return 0;
     }

}

最佳答案

正如 Puce 已经写过的那样,第二种方法更安全,因为整数溢出会给您带来意想不到的输出。如果你希望它既简短又安全,你可以这样写:

return Integer.compare(acc1.balance(), acc2.balance());

关于java - 不同类型的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582352/

相关文章:

java - Struts2 简单应用程序不执行

java - 随后按字段对对象进行排序

swift - 在 Swift 中比较枚举

ruby - 如何为包含可比较的类定义哈希函数?

java - 列出用法而不指定类型

java - 与 Servlet 相比,使用 Websocket 下载文件速度较慢

c++ - 是否有一个用于 std::set(或 std::map)的 STL 比较器,它带有提供基于值的查找的 shared_ptr 键? std::owner_less 究竟做了什么?

java - 使用 Comparable 比较对象并在 TreeMap 中对它们进行排序

java - 使用的 GUI 框架是什么,是具有优秀 GUI 的网站,如 twitter、www.groupon.com 等

java - Comparator.nullsFirst 在两者都为 null 时的工作