001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.reef.util; 020 021import java.util.Collection; 022 023/** 024 * Utility functions for arrays and collection classes. 025 */ 026public final class CollectionUtils { 027 028 private CollectionUtils() { 029 // avoid instantiation 030 } 031 032 /** 033 * Checks if the collection is null or empty. 034 * @param <T> a type of element of collection 035 * @param parameter the collection 036 * @return true if the collection is null or empty 037 */ 038 public static <T> boolean isEmpty(final Collection<T> parameter) { 039 return parameter == null || parameter.isEmpty(); 040 } 041 042 /** 043 * Checks if the collection is not null and not empty. 044 * @param <T> a type of element of collection 045 * @param parameter the collection 046 * @return true if the collection is not null nor empty 047 */ 048 public static <T> boolean isNotEmpty(final Collection<T> parameter) { 049 return !isEmpty(parameter); 050 } 051 052 private static final Object[] EMPTY_ARRAY = new Object[0]; 053 054 /** 055 * Return an empty array if input is null; works as identity function otherwise. 056 * This function is useful in `for` statements if the iterable can be null. 057 * @param array Input array. Can be null. 058 * @param <T> Type of the elements of the array. 059 * @return A reference to the input array if it is not null, an empty array otherwise. 060 */ 061 @SuppressWarnings("unchecked") 062 public static <T> T[] nullToEmpty(final T[] array) { 063 return array == null ? (T[])EMPTY_ARRAY : array; 064 } 065}