プリミティブをソートするためにコンパレータを使用できないのはなぜですか?
-
14-10-2019 - |
質問
Java 5に自動ボクシングがあるので、なぜソートプリミティブにコンパレータを使用できないのですか? an int
に包まれません Integer
?
解決
Arrays.sort(..)
プリミティブアレイを並べ替えるための専用のオーバーロードがあります。
標準的なルールとは別に特別な並べ替えルールが必要な場合は、自動ボクシングを使用する必要があるのではないかと思います。それに加えて、あなたはあなたの配列をに変換する必要があります Integer[]
, 、 なぜなら int[]
自動ボックス化されていません。
そして、あなたが配列について話しているのではなく、コレクションについて話しているなら - あなたは選択肢がありません - コレクションはオブジェクトのみを保持することができます。
他のヒント
パラメータ化できないためa Comparator<T>
- またはプリミティブタイプを備えたその他のパラメーター化されたタイプ。
はい、これは非常に迷惑です...あなたは作ることができません List<int>
またはa Map<String, boolean>
など、オブジェクトタイプとプリミティブの両方で機能する一般的な方法を書くことはできません。 8つのプリミティブタイプのそれぞれに専用の方法が必要です。しかし、それはJava 1以来私たちが立ち往生してきたデザインです。ジェームズ・ゴスリングを非難します;-)
Bozhoが指摘するように、 Arrays.sort(...)
必要なすべての並べ替え方法を提供します。
所属していません StackOverflow