Hashmapがint, charで動作しない [重複].
質問
重複の可能性があります。
Javaコレクションにプリミティブな値を格納する?
私は以下を使用するときにjavaで:-。
public HashMap<char, int> buildMap(String letters)
{
HashMap<char, int> checkSum = new HashMap<char, int>();
for ( int i = 0; i < letters.length(); ++i )
{
checkSum.put(letters.charAt(i), primes[i]);
}
return checkSum;
}
不適切な型に関連するエラーが発生します。charとintの代わりにCharacterとIntegerをそれぞれ使うことで問題を解決しました。しかし、なぜHashMapがプリミティブなデータ型を扱えないのかがわからず困っています。
どのように解決するのですか?
Genericパラメータは参照型にしかバインドできず、プリミティブ型にはバインドできないため、対応するラッパータイプを使用する必要があります。 試しに
HashMap<Character, Integer>
を試してみてください。
しかし、なぜHashMapがプリミティブなデータ型を扱えないのかがわからず、困っています。
この原因は
タイプ消去
. Java には最初からジェネリックが無かったので
HashMap<Character, Integer>
は実際には
HashMap<Object, Object>
. コンパイラは、間違った型の値を入れたり、間違った型の値を出したりしないように、追加のチェックと暗黙のキャストをたくさん行いますが、実行時にはただ一つの
HashMap
クラスがあり、それはオブジェクトを格納します。
他の言語では、型を特化させるので、C++では
vector<bool>
とは全く異なり
vector<my_class>
とは内部的に大きく異なり、両者には共通の
vector<?>
のスーパータイプを共有しません。 しかし、Java は
List<T>
は
List
とは関係なく
T
が何であるかに関係なく、ジェネリック以前のコードとの後方互換性のために、
関連
-
Javaでよくある構文エラー
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Junitのユニットテストはjava.lang.Testを報告します。
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Springのオートワイヤリングの仕組みは?
-
[解決済み】Java HashMapは、同じハッシュコードを持つ異なるオブジェクトをどのように処理するのですか?
-
[解決済み] HashMapとintをキーとする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Java の switch case 文で必要な定数式の問題の解決法
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
API の戻り値を処理するために ResponseEntity を使用する
-
eclipse にリソースリーク:'in' が閉じない
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
[解決済み】なぜJava Genericsはプリミティブ型をサポートしないのですか?
-
[解決済み] なぜJava CollectionsはPrimitives型を直接格納できないのですか?