タグ付けされた質問 「compareto」

17
nullセーフなcompareTo()実装を単純化する方法は?
compareTo()このような単純なクラスのメソッドを実装しています(Collections.sort()Javaプラットフォームが提供するその他の便利な機能を使用できるようにするため)。 public class Metadata implements Comparable<Metadata> { private String name; private String value; // Imagine basic constructor and accessors here // Irrelevant parts omitted } 私が欲しい自然順序付け名前が同じである場合の値でソート)の名前と2でソート)1;:これらのオブジェクトのためにあることを どちらの比較でも、大文字と小文字は区別されません。どちらのフィールドでも、null値は完全に許容されるためcompareTo、これらの場合に壊れてはなりません。 頭に浮かぶ解決策は、次のようなものです(ここでは「ガード句」を使用していますが、他の人は単一の戻り点を好むかもしれませんが、それは重要ではありません)。 // primarily by name, secondarily by value; null-safe; case-insensitive public int compareTo(Metadata other) { if (this.name == null && other.name != null){ …

4
BigDecimal equals()とcompareTo()
簡単なテストクラスを考えてみましょう: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); } } …

21
compareTo()とequals()の比較
StringJavaのの等価性をテストするときは、equals()これが最も自然な方法のように思えるため、常に使用しました。結局のところ、その名前はすでに意図されていることを示しています。しかし、私の同僚は最近、のcompareTo() == 0代わりに使用するように教えられたと私に言ったequals()。これは不自然に感じられ(compareTo()順序付けを提供し、同等性を比較しないことを意味します)、多少危険compareTo() == 0でもあります(すべての場合において同等であることを意味するわけではないため、必ずしもそうであるとは限りませんString)。 彼はfor のcompareTo()代わりに使用するように教えられた理由を知りませんでした。また、理由もわかりませんでした。これは本当に個人的な好みの問題ですか、それともどちらの方法にも本当の理由がありますか?equals()String
118 java  string  equals  compareto 

5
JavaのEnum finalでcompareToを使用するのはなぜですか?
Javaの列挙型がComparableインターフェースを実装します。ComparableのcompareToメソッドをオーバーライドすると良かったのですが、ここではfinalとマークされています。上のデフォルトの自然な順序EnumさんがcompareToリストされているためです。 Java列挙型にこの制限がある理由を誰かが知っていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.