プリミティブintまたはJavaのプリミティブのリストを作成する方法はありますか?
List<int> myList = new ArrayList<int>();
List myList = new ArrayList();
ができるようです
このリストに「int」を追加します。しかし、これは、このリストに何でも追加できることを意味します。
私の唯一のオプションは、intの配列を作成してリストに変換するか、整数オブジェクトのリストを作成することですか?
Javaでは、変数の型はプリミティブ型または参照型のいずれかです。ジェネリック型引数は参照型である必要があります。プリミティブはObject
を拡張しないため、パラメーター化された型のジェネリック型引数として使用できません。
代わりに、Integer
のラッパーであるint
クラスを使用します。
List<Integer> list = new ArrayList<Integer>();
Java 7を使用している場合、ダイヤモンド演算子を使用してこの宣言を簡素化できます。
List<Integer> list = new ArrayList<>();
Javaのオートボクシングでは、必要に応じてプリミティブ型int
がInteger
になります。
オートボクシングは、Javaコンパイラがプリミティブ型とそれに対応するオブジェクトラッパークラス間で行う自動変換です。
したがって、次のことが有効です。
int myInt = 1;
List<Integer> list = new ArrayList<Integer>();
list.add(myInt);
System.out.println(list.get(0)); //prints 1
Java Collection Frameworkが使用されている場合、プリミティブ型を含むことができるコレクションはありません。
ただし、次のようなプリミティブ型をサポートする他のJavaコレクションがあります。 Trove 、 Colt 、 Fastutil 、- グアバ
Trove Libraryを使用した場合、intを含むarraylistの例は次のとおりです。
TIntArrayList list= new TIntArrayList();
Javaコレクションからの整数のArrayListと比較した場合、このリストのパフォーマンスは、対応する整数ラッパークラスへのオートボクシング/アンボクシングが必要ないため、はるかに優れています。
プリミティブintまたはJavaのプリミティブのリストを作成する方法はありますか
いいえ、できません。 Integer
、String
、またはカスタムタイプなどの参照タイプのリストのみを作成できます。
List myList = new ArrayList();
を実行して、このリストに「int」を追加できるようです。
このリストにint
を追加すると、Integer
ラッパータイプに自動的にボックス化されます。しかし、新しいコードでraw型リストを使用すること、またはそのためのジェネリック型を使用することは悪い考えです。
このリストには何でも追加できます。
もちろん、それはrawタイプを使用することの欠点です。 猫、犬、虎、恐竜をすべて1つのコンテナに入れることができます。
私の唯一のオプションは、intの配列を作成し、それをリストに変換することです
その場合も、List<Integer>
のみを取得します。 List<int>
またはプリミティブを作成する方法はありません。
とにかく気にしないでください。 List<Integer>
でも、int
プリミティブ型を追加できます。以下の例のように、自動的にボックス化されます。
List<Integer> list = new ArrayList<Integer>();
list.add(5);
ApacheフレームワークからArrayIntListを使用してみてください。プリミティブなintを保持できることを除いて、arraylistとまったく同じように機能します。
詳細はこちら-
これは不可能です。 Java仕様は、ジェネリックでのプリミティブの使用を禁止しています。ただし、i
がボクシングのおかげでintである場合は、ArrayList<Integer>
を作成し、add(i)
を呼び出すことができます。
Eclipse Collections で利用可能なプリミティブコレクションを使用できます。 Eclipseコレクションには、すべてのプリミティブに対してList
、Set
、Bag
、およびMap
があります。プリミティブコレクションの要素はプリミティブとして維持され、ボクシングは行われません。
IntList は次のように初期化できます。
MutableIntList ints = IntLists.mutable.empty();
次のようにList<Integer>
からIntList
に変換できます。
List<Integer> integers = new ArrayList<>();
MutableIntList ints = ListAdapter.adapt(integers).collectInt(each -> each);
注:私はEclipse Collectionsの寄稿者です。
コレクションは、 参照型 またはウィルカードのいずれかをサポートするジェネリックを使用します。ただし、Integer
ラッパーを使用できます
List<Integer> list = new ArrayList<>();
Integer []配列をint []配列に変換する方法はありますか?
Javaコアライブラリからのこの大幅な省略は、私がこれまで取り組んでいるほとんどすべてのプロジェクトで発生するようです。 Troveライブラリは便利かもしれませんが、LGPLライブラリを静的にリンクするAndroidアプリのLPGLを満たすための厳密な要件を解析することはできません)。そして、これらのクラスを取得するためにApacheソースをリッピングして削除するのは単純に不便です。より良い方法が必要です。
Javaの開発にAndroidを使用する場合は、SparseIntArray
とint
の間のオートボクシングを防ぐためにInteger
を使用することをお勧めします。
Android開発者向けドキュメント のSparseIntArray
の詳細情報とAndroidのオートボクシングの適切な説明を見つけることができます リンクの説明をここに入力してください
さらに、最近のBaeldungの記事で Javaのプリミティブ整数値のリスト の適切な要約を見つけることができます。