Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 87ce7729e54897260a3b122cbf2aab2b9bad0b07 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 * 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();
  }
}

Back to the top