質問

プリミティブ(int型、char型、ダブル、など)で使用することができますVectorまたはArrayListクラスに相当するJava APIの拡張可能配列クラスはありますか?

私は整数のための迅速、拡張可能な配列を必要とし、IntegerまたはVectorでそれらを使用するためにArrayListクラスでそれらをラップする必要が無駄なようです。私のGoogle-FUは私を失敗してます。

役に立ちましたか?

解決

少なくともJava APIの中で、残念ながらのいいえ、そのようなクラスはあります。 Javaののサードパーティ製品のプリミティブコレクションをrel="noreferrer"> href="http://pcj.sourceforge.net/"

これは、既存のコレクションクラス(特定のList実装で)と一緒に、オートボクシングを使用するためにはかなり危険です。たとえばます:

List<Integer> l = new ArrayList<Integer>();
l.add(4);

l.remove(4); //will throw ArrayIndexOutOfBoundsException
l.remove(new Integer(4)); //what you probably intended!

そしてそれはまた、神秘的なNullPointerExceptions(おそらくMap経由で)アクセスの一般的な原因です。

Map<String, Integer> m = new HashMap<String, Integer>();
m.put("Hello", 5);
int i = m.get("Helo Misspelt"); //will throw a NullPointerException

他のヒント

http://trove4j.sourceforge.net/する

  

トローブライブラリは、高速を提供します   以下のための定期的なプリミティブのコレクション   ジャワます。

トローブはプリミティブを使用しているため、タイプ、それはjava.utilのコレクションインタフェースを実装していない定義することに注意してください。

(LGPLライセンス)

現代Javaはプリミティブのオートボクシングをサポートしていますので、あなたが言うことができます。

List<Integer> lst = new ArrayList<Integer>;
lst.add(42);

少なくとも新しい整数の構文酢を回避する(42)。

scroll top