問題タブ [comparable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - mainにnull値が含まれているComparablesのリストから最小値と最大値を取得するための最良の方法は何ですか?
私はこのようなことを考えています:
しかし、ヌルセーフではありません。これも私が望んでいることです。
この問題を解決するためのより良い方法を知っていますか?
編集:
コメントの後、私もmin()を試しました:
それについてどう思いますか?
java - < と > は、implements Comparable などの何を意味しますか?
Java 1.4.2では、クラスはインターフェースをjava.math.BigInteger
実装します。Comparable
Serializable
Java 1.5.0では、クラスはインターフェースをjava.math.BigInteger
実装します。Serializable
Comparable<BigInteger>
<
これは、とについて質問するための単なる例です>
。私が本当に疑問に思っているのは、<
と>
ものです。
私の質問は 3 つあります。
- ステートメントの
<BigInteger>
部分はどういう意味ですか?implements
- その構文は何と呼ばれていますか?
- そしてそれは何をしますか?
<
PS: グーグルで検索するのは本当に難しく、そもそも>
SO を検索することは不可能<
です。>
ありがとう!
java - java.lang.NumberがComparableを実装しないのはなぜですか?
なぜ java.lang.Number
実装しないのか誰かが知っていますComparable
か?これは、私には少し奇妙に思えるNumber
sを並べ替えることができないことを意味します。Collections.sort
ディスカッションの更新後:
すべての有益な回答をありがとう。私はこのトピックについてさらに調査を行うことになりました。
java.lang.NumberがComparableを実装しない理由の最も簡単な説明は、可変性の懸念に根ざしています。
少しレビューすると、は、、、、、、、、、、、およびの抽象的なスーパーjava.lang.Number
タイプです。そのリストにあり、実装しないでください。AtomicInteger
AtomicLong
BigDecimal
BigInteger
Byte
Double
Float
Integer
Long
Short
AtomicInteger
AtomicLong
Comparable
Comparable
掘り下げてみると、比較中または比較後にオブジェクトが変更され、比較の結果が役に立たなくなる可能性があるため、可変型に実装するのは適切ではないことがわかりました。AtomicLong
とは両方ともAtomicInteger
変更可能です。API設計者は、将来のサブタイプの実装を制約するため、Number
実装しないことを事前に考えていました。Comparable
確かに、AtomicLong
そして最初に実装されAtomicInteger
てからずっと後にJava1.5で追加されました。java.lang.Number
可変性とは別に、ここでもおそらく他の考慮事項があります。のcompareTo
実装では、すべてのサブタイプに対応できるため、Number
すべての数値をにプロモートする必要があります。数学とパフォーマンスの観点からのその昇進の意味は私には少し不明確ですが、私の直感はその解決策が厄介であると感じています。BigDecimal
Number
java - javaのEnum finalにcompareToがあるのはなぜですか?
Java の列挙型は、Comparable
インターフェイスを実装します。Comparable
のメソッドをオーバーライドすればよかったのですcompareTo
が、ここでは final とマークされています。Enum
のデフォルトの自然順序compareTo
は、リストされた順序です。
Java列挙型にこの制限がある理由を知っている人はいますか?
java - 同等の改善比較パフォーマンス
コードのプロファイリングを行ったところ、 を実装するクラスがComparable<T>
8 倍の CPU 時間を消費していることがわかりました。
よりも
スローダウンは、このメソッドの仮想テーブル ルックアップが原因であると想定しています。
関数の静的呼び出しを強制する方法はありますか? (非仮想 C++ メソッドと同様)
このオブジェクトで
Comparable<T>
使用するため、インターフェイスを引き続き使用したいので、このコードを書き直したくありません。編集:いいえ、私はcompareTo(Object)
を実装しませんでした-これは自動的に生成され、プロファイラーによって報告されましたTreeSet
java - Java Generics and Infinity(比較可能)
整数型を使用すると、次のことができます。
ジェネリックを使用した場合はどうすればよいですか?
PriorityQueueに似たものを実装するためにこれが必要です。キューから削除したいノードにアクセスできますが、最小値ではありません。
私は最初のステップで立ち往生しています。私ができる唯一のことは、ノードのキーを現在の最小値に設定することです。十分かどうかはわかりません。
java - Javaでは、同等の意味から拡張するとはどうなりますか
このようなコードが表示されます
これはどういう意味ですか、それの長所と短所は何ですか?
java - Java:CollatorKeyを使用してコレクションをソートする
私が達成したいのは、オブジェクトの集合を文字列値でソートすることです。ただし、コレーターを使用してロケールに依存する方法で。パフォーマンス上の理由から、Java APIはCollationKeyの使用がはるかに高速であると述べているため、CollatorKeyクラスではなくCollator compare()メソッド(以下のコードのように)を使用したくありません。
しかし、CollationKeyを使用してcompareTo()メソッドを実装するにはどうすればよいですか?CollationKeyを使用する場合、私が理解している限り、すべての比較メソッドを自分で完全に作成する必要があります。そのため、Collections.sort()メソッドを使用できなくなります...理解しやすい例と、CollationKeyを使用してPersonオブジェクトのコレクションを並べ替える最も効率的な実装に非常に感謝しています。
ありがとうございました!
java - Java ジェネリックの楽しみ
ジェネリックを使用し、コンパイラの警告を回避して、以下のコードを記述する方法を知っている人はいますか? (@SuppressWarnings("unchecked") は不正行為と見なされます)。
そして、おそらく、「左」のタイプが「右」のタイプと同じであることをジェネリックを介して確認しますか?
java - クラスはいつComparableおよび/またはComparatorである必要がありますか?
ComparableとComparatorの両方を実装するクラスを見てきました。これは何を意味するのでしょうか?なぜ私は一方を他方の上に使用するのですか?