blob: 87ce7729e54897260a3b122cbf2aab2b9bad0b07 [file] [log] [blame]
/*
* Copyright (c) 2013, 2015 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.net4j.util;
import java.lang.reflect.Array;
/**
* Various static helper methods.
*
* @author Eike Stepper
* @since 3.4
*/
public final class ArrayUtil
{
private ArrayUtil()
{
}
public static <T> T[] add(T[] array, T element)
{
int length = array.length;
@SuppressWarnings("unchecked")
T[] newArray = (T[])Array.newInstance(array.getClass().getComponentType(), length + 1);
System.arraycopy(array, 0, newArray, 0, length);
newArray[length] = element;
return newArray;
}
public static <T> T[] remove(T[] array, T element)
{
int length = array.length;
for (int i = 0; i < array.length; i++)
{
T t = array[i];
if (ObjectUtil.equals(t, element))
{
@SuppressWarnings("unchecked")
T[] newArray = (T[])Array.newInstance(array.getClass().getComponentType(), length - 1);
if (i != 0)
{
System.arraycopy(array, 0, newArray, 0, i);
}
int next = i + 1;
if (next <= length)
{
System.arraycopy(array, next, newArray, i, length - next);
}
return newArray;
}
}
return array;
}
public static String toString(Object[] array)
{
StringBuilder builder = new StringBuilder();
builder.append('{');
for (int i = 0; i < array.length; i++)
{
Object element = array[i];
if (i != 0)
{
builder.append(", ");
}
builder.append(element);
}
builder.append('}');
return builder.toString();
}
}