コレクションが空かどうかを確認したいのですがnull
。誰かが私にベストプラクティスを教えてもらえますか?
現在、私は以下のようにチェックしています:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
コレクションが空かどうかを確認したいのですがnull
。誰かが私にベストプラクティスを教えてもらえますか?
現在、私は以下のようにチェックしています:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
プロジェクトでApacheCommonsCollectionsライブラリを使用する場合は、コレクションまたはマップが空であるかnullであるか(つまり、「nullセーフ」であるか)をそれぞれチェックするメソッドCollectionUtils.isEmpty
とメソッドを使用できます。MapUtils.isEmpty()
これらのメソッドの背後にあるコードは、多かれ少なかれユーザー@iczaが彼の回答に書いたものです。
何をするかに関係なく、書くコードが少なければ少ないほど、コードの複雑さが減るにつれてテストする必要のあるコードが少なくなることを忘れないでください。
それをチェックする最良の方法です。あなたはそれをするためのヘルパーメソッドを書くことができます:
public static boolean isNullOrEmpty( final Collection< ? > c ) {
return c == null || c.isEmpty();
}
public static boolean isNullOrEmpty( final Map< ?, ? > m ) {
return m == null || m.isEmpty();
}
Springフレームワークを使用しているCollectionUtils
場合は、コレクション(リスト、配列)とマップなどの両方に対してチェックするために使用できます。
if(CollectionUtils.isEmpty(...)) {...}
個人的には、代わりに空のコレクションを使用することを好みnull
、コレクションが空であるかどうかに関係なくアルゴリズムが機能するようにアルゴリズムを機能させます。
あなたが春を使うとき、あなたは使うことができます
boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);
ここで、objは任意の[map、collection、array、aything ...]
それ以外の場合:コードは次のとおりです。
public static boolean isEmpty(Object[] array) {
return (array == null || array.length == 0);
}
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj.getClass().isArray()) {
return Array.getLength(obj) == 0;
}
if (obj instanceof CharSequence) {
return ((CharSequence) obj).length() == 0;
}
if (obj instanceof Collection) {
return ((Collection) obj).isEmpty();
}
if (obj instanceof Map) {
return ((Map) obj).isEmpty();
}
// else
return false;
}
文字列の最適なものは次のとおりです。
boolean isNullOrEmpty = (str==null || str.trim().isEmpty());
Collectionオブジェクトが空か、nullかどうかを確認します。以下に示すこれらすべてのメソッドは、org.apache.commons.collections4.CollectionUtilsパッケージに含まれています。
リストをチェックするか、コレクションオブジェクトのタイプを設定します。
CollectionUtils.isEmpty(listObject);
CollectionUtils.isNotEmpty(listObject);
オブジェクトのマップタイプを確認してください。
MapUtils.isEmpty(mapObject);
MapUtils.isNotEmpty(mapObject);
すべてのメソッドの戻り型はブール値です。
org.apache.commons.lang.Validate
's " notEmpty "メソッドを使用できます:
Validate.notEmpty(myCollection)
->指定された引数コレクションがnullでもサイズがゼロでもない(要素がない)ことを検証します。それ以外の場合は例外をスローします。
nullをチェックする必要がある場合は、それが方法です。ただし、これを制御できる場合は、可能な限り空のコレクションを返し、後で空のコレクションのみをチェックしてください。
このスレッドはC#とほぼ同じですが、原則はJavaにも同様に当てはまります。そこに記載されているように、nullは次の場合にのみ返されます。
- nullは、より具体的なことを意味する場合があります。
- API(コントラクト)により、nullを返すように強制される場合があります。
マップを含むすべてのコレクションの場合:isEmpty
これらのコレクションオブジェクトにあるメソッド。ただし、前にnullチェックを実行する必要があります。
Map<String, String> map;
........
if(map!=null && !map.isEmpty())
......