FileDocCategorySizeDatePackage
ArrayUtil.javaAPI DocGlassfish v2 API5502Fri May 04 22:31:06 BST 2007com.sun.appserv.management.util.misc

ArrayUtil

public final class ArrayUtil extends Object
Provides: - utility to check for equality

Fields Summary
Constructors Summary
private ArrayUtil()

		// disallow instantiation
	
Methods Summary
public static booleanarrayContainsNulls(java.lang.Object[] array)

		boolean	containsNulls	= false;
		
		for( int i = 0; i < array.length; ++i )
		{
			if ( array[ i ] == null )
			{
				containsNulls	= true;
				break;
			}
		}
		
		return( containsNulls );
	
public static booleanarraysEqual(java.lang.Object array1, java.lang.Object array2)

		boolean	equal	= array1 == array2;
		
		if ( equal )
		{
			// same object or both null
			return( true );
		}
		else if ( array1 == null || array2 == null)
		{
			return( false );
		}
		

		if ( array1.getClass() == array2.getClass() &&
			ClassUtil.objectIsArray( array1 ) &&
			Array.getLength( array1 ) == Array.getLength( array2 ) )
		{
			equal	= true;
			final int	length	= Array.getLength( array1 );
			
			for( int i = 0; i < length; ++ i )
			{
				final Object	a1	= Array.get( array1, i );
				final Object	a2	= Array.get( array2, i );
				
				if ( a1 != a2)
				{
					if ( a1 == null || a2 == null )
					{
						equal	= false;
					}
					else if ( ClassUtil.objectIsArray( a1 )  )
					{
						if ( ! arraysEqual( a1, a2 ) )
						{
							equal	= false;
						}
					}
				}

				if ( ! equal )
					break;
			}
		}
		
		return( equal );
	
public static T[]newArray(java.lang.Class theClass, int numItems)

        return (T[])( Array.newInstance( theClass, numItems ) );
    
public static T[]newArray(T[] items, int startIndex, int numItems)
Create a new array from the original.

param
items the original array
param
startIndex index of the first item
param
numItems
return
an array of the same type, containing numItems items

		final Class<T>	theClass	= TypeCast.asClass( items.getClass().getComponentType() );
		
		final T[]	result	= newArray( theClass, numItems );
		System.arraycopy( items, startIndex, result, 0, numItems );
		
		return( result );
	
public static T[]newArray(T[] items1, T[] items2)
Create a new array consisting of originals and new.

param
items1 1st array
param
items2 2nd array
return
an array of the same type as items1, its elements first

		final Class<T> class1	= TypeCast.asClass( items1.getClass().getComponentType() );
		final Class<T> class2	= TypeCast.asClass( items2.getClass().getComponentType() );
		
		if ( ! class1.isAssignableFrom( class2 ) )
		{
			throw new IllegalArgumentException();
		}
		
		final int	length1	= Array.getLength( items1 );
		final int	length2	= Array.getLength( items2 );
		final T[]	result	= newArray( class1, length1 + length2 );
		System.arraycopy( items1, 0, result, 0, length1 );
		System.arraycopy( items2, 0, result, length1, length2 );
		
		return( result );
	
public static T[]newArray(T[] items, T item)
Create a new array consisting of an original array, and a single new item.

param
items an array
param
item an item to append
return
an array of the same type as items1, its elements first

		final Class<T>	theClass	= TypeCast.asClass( items.getClass().getComponentType() );
		final T[]	result	= newArray( theClass, items.length + 1 );
		System.arraycopy( items, 0, result, 0, items.length );
		
		result[ result.length - 1 ]	= item;
		return( result );