119

次のようにJavaでプリミティブintまたはプリミティブのリストを作成する方法はありますか?

List<int> myList = new ArrayList<int>();

できるらしいList myList = new ArrayList();

このリストに「int」を追加します。しかし、これは、このリストに何でも追加できることを意味します。

私の唯一のオプションは、int の配列を作成してリストに変換するか、Integer オブジェクトのリストを作成することですか?

4

10 に答える 10

27

いいえ、Java Collection Framework が使用されている場合、プリミティブ型を含むことができるコレクションはありません。

ただし、 TroveColtFastutilGuavaなど、プリミティブ型をサポートする他の Java コレクションがあります。

Trove Library を使用した場合の int を含む arraylist の例は次のとおりです。

 TIntArrayList list= new TIntArrayList();

このリストのパフォーマンスは、Java コレクションからの整数の ArrayList と比較すると、対応する整数ラッパー クラスへの自動ボックス化/ボックス化解除が必要ないため、はるかに優れています。

于 2013-08-02T16:16:02.030 に答える
6

Apache フレームワークの ArrayIntList を使用してみてください。プリミティブ int を保持できることを除いて、arraylist とまったく同じように機能します。

詳細はこちら -

https://commons.apache.org/dormant/commons-primitives/apidocs/org/apache/commons/collections/primitives/ArrayIntList.html

于 2014-05-22T13:35:54.077 に答える
4

Eclipse Collectionsで使用可能なプリミティブ コレクションを使用できます。Eclipse コレクションには、すべてのプリミティブに対してListSetBagおよびがあります。Mapプリミティブ コレクション内の要素はプリミティブとして保持され、ボックス化は行われません。

次のようにIntListを初期化できます。

MutableIntList ints = IntLists.mutable.empty();

List<Integer>aから次のIntListように変換できます。

List<Integer> integers = new ArrayList<>();
MutableIntList ints = ListAdapter.adapt(integers).collectInt(each -> each);

注: 私は Eclipse Collections の寄稿者です。

于 2016-03-27T01:22:37.210 に答える
0

Android 開発に Java を使用する場合は、 とのSparseIntArray間のオートボクシングを防止するために使用することをお勧めします。intInteger

詳細についてSparseIntArray、Android Developers のドキュメントを参照してください。また、Android でのオートボクシングの適切な説明については、ここにリンクの説明を入力してください。

于 2015-12-08T16:53:19.260 に答える
-4

Java コレクションは、オブジェクトのみのコレクションである必要があります。

List<Integer> integerList = new ArrayList<Integer>();

Integer はプリミティブデータ型 int のラッパークラスです。

JAVA ラッパー クラスの詳細は こちら!

U は、integerList との間で int を直接保存および取得できます。 integerList.add(intValue); int intValue = integerList.get(i)

于 2013-08-02T19:35:05.067 に答える