web-dev-qa-db-ja.com

このJDKの制限を回避する方法は?

Null要素を許可しないJava Collection Frameworkからのクラスを探しています。

知ってる?

38
Stephan

ほとんどの Queue 実装( LinkedList の顕著な例外を除く)は、nullを受け入れません。

EnumSet は、Set値を許可しない特殊なnull実装です。

20
Joachim Sauer

Constraintsを使用:

import com.google.common.collect.Constraints;
...
Constraints.constrainedList(new ArrayList(), Constraints.notNull())

from Guava 最大限の柔軟性を実現します。

UPDATE:Guava Constraintsは Release 15 で非推奨になりました-明らかに置換なし。

UPDATE 2:現在(Guava 19.0-rc2) Constrains はまだ存在し、非推奨ではありません。ただし、 Javadoc にはありません。

MapConstraintリリース19 で廃止されたため、Javadocが正しいと思う

47
maaartinus

そのようなコレクションのまとめがあります here

12

Apache Commons Framework-CollectionUtils.addIgnoreNull

MyObjがnullでない場合、myListに追加します。

org.Apache.commons.collections.CollectionUtils.addIgnoreNull(myList, myObj)

12
Cengiz

Google Guava述語の使用(@Joachim Sauerからの回答は非推奨です)

//list is the variable where we want to remove null elements
List nullRemovedList=Lists.newArrayList(Iterables.filter(list, Predicates.notNull()));

//Or convert to Immutable list
List nullRemovedList2=ImmutableList.copyOf(Iterables.filter(list, Predicates.notNull()));
4
Didac Montero

開始 ここでは、コレクションAPIページ 。 「関連項目」セクションをご覧ください。リンクをたどってください。許可または不許可の決定 ヌル 実装クラスによって作成されます。さまざまな「関連項目」セクションのリンクをたどって実装クラス(HashMapなど)にアクセスし、挿入メソッド(通常はadd、Push、またはputのバリエーション)を見て、その実装が許可するかどうかを確認します。 ヌル

1
DwB

Hashtableは、nullキーまたは値を許可しません。

1
Steve B.