/*
* Copyright (c) 2003 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved.
*
* Project: OpenSubsystems
*
* $Id: ArrayUtils.java,v 1.9 2007/01/23 06:00:30 bastafidli Exp $
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Collection of useful utilities to work with arrays.
*
* @version $Id: ArrayUtils.java,v 1.9 2007/01/23 06:00:30 bastafidli Exp $
* @author Peter Satury
* @code.reviewer Miro Halas
* @code.reviewed 1.5 2005/07/29 07:36:24 bastafidli
*/
public final class ArrayUtils
{
/**
* Private constructor since this class cannot be instantiated
*/
private ArrayUtils(
)
{
// Do nothing
}
// Public methods ///////////////////////////////////////////////////////////
/**
* Method to exclude 2 arrays of ints so that the result contains all elements
* from the first array, which are not in the second array.
*
* @param arrBase - base array to exclude from
* @param arrExclude - array to exclude from the first one
* @return int[] - array which contains all elements from the first array
* which are not in the second array or null
*/
public static int[] exclude(
int[] arrBase,
int[] arrExclude
)
{
int[] arrReturn = null;
if ((arrBase != null) && (arrBase.length > 0) && (arrExclude != null)
&& (arrExclude.length > 0))
{
int[] arrHelp;
int iCount1;
int iHelp;
int iLength = 0;
arrHelp = new int[arrBase.length];
for (iCount1 = 0; iCount1 < arrBase.length; iCount1++)
{
iHelp = arrBase[iCount1];
if (ArrayUtils.contains(arrExclude, iHelp) == -1)
{
// If the element is not part of the second array then it should
// be included in the result
arrHelp[iLength++] = iHelp;
}
}
// Shrink the array
// TODO: Performance: Replace this with System.arraycopy
arrReturn = new int[iLength];
for (int iCount = 0; iCount < iLength; iCount++)
{
arrReturn[iCount] = arrHelp[iCount];
}
}
else
{
arrReturn = arrBase;
}
return arrReturn;
}
/**
* Test if specified array contains given element and if it does, find
* its position.
*
* @param source - array to search, can be null
* @param iTarget - element to find
* @return int - -1 if it doesn't exist there otherwise its position
*/
public static int contains(
int[] source,
int iTarget
)
{
int iReturn = -1;
if ((source != null) && (source.length > 0))
{
int iIndex;
for (iIndex = 0; iIndex < source.length; iIndex++)
{
if (source[iIndex] == iTarget)
{
iReturn = iIndex;
break;
}
}
}
return iReturn;
}
/**
* Sum all elements in the array.
*
* @param source - array to sum elements of
* @return long - sum of the elements in the array
*/
public static long sum(
int[] source
)
{
int iReturn = 0;
if ((source != null) && (source.length > 0))
{
int iIndex;
for (iIndex = 0; iIndex < source.length; iIndex++)
{
iReturn += source[iIndex];
}
}
return iReturn;
}
}