net.ranides.assira.collection
Class ArrayUtils

java.lang.Object
  extended by net.ranides.assira.collection.ArrayUtils

public final class ArrayUtils
extends Object

Operacje na tablicach.

Author:
ranides

Method Summary
static
<S> Object[]
apply(S[] values, Function<?,S> function)
           
static
<ArrayT> ArrayT
arraycopy(ArrayT source)
          Kopiuje zawartość podanej tablicy.
static
<T> T[]
arraycopy(T[] source)
          Kopiuje zawartość podanej tablicy.
static
<T> T[]
arraycopy(T[] target, Object[] source)
           Kopiuje zawartość tablicy obiektów do wskazanej tablicy docelowej, wykonując odpowiedniego rzutowania dla każdego elementu osobno.
static
<T> List<T>
asList(T... values)
          Tworzy listę odzwierciedlającą podaną tablicę.
static
<ArrayT> ArrayT
clip(ArrayT array, int size)
           
static
<T> T[]
clip(T[] array, int size)
          Przycina tablicę, jeśli tablica ma długość większą od podanej granicy.
static
<ArrayT> ArrayT
concat(ArrayT first, ArrayT second)
          Zobacz: concat
static
<T> T[]
concat(T[] first, T[] second)
          Łączy zawartość podanych tablic.
static
<T> boolean
contains(T[] array, T value)
          Sprawdza, czy podana tablica zawiera element równy podanemu argumentowi.
static
<K,T extends K>
T
first(K[] values, Class<T> clazz)
          Wyszukuje i zwraca pierwszy obiekt o klasie T, lub null, jeśli takiej wartości brak null safe method
static
<T> T
first(T[] values)
          Zwraca pierwszy obiekt w tablicy, lub null, jeśli tablica jest pusta null safe method
static
<T> T
get(T[] values, int index)
          Pobiera index-ty element z tablicy, lub zwraca null, jeśli tablica ma mniejszy rozmiar niż konieczne null safe method
static
<T> T
get(T[] values, int index, T ddefault)
          Pobiera index-ty element z tablicy, lub zwraca wartość domyślną, jeśli tablica ma mniejszy rozmiar niż konieczne.
static
<T> int
indexOf(T[] array, T value)
          Wyszukuje w tablicy pierwszy element równy podanej wartości i zwraca pozycję elementu.
static
<T> Object[]
inverse(T[] values, CoFunction<T,?> function)
           
static
<T> boolean
isEmpty(Object values)
          Sprawdza czy tablica jest pusta.
static
<T> boolean
isEmpty(T[] values)
          Sprawdza czy tablica jest pusta.
static
<T> ListIterator<T>
iterator(T[] array)
          Zwraca iterator przeglądający elementy tablicy.
static
<T> ListIterator<T>
iterator(T[] array, int size, int first)
          Zwraca iterator przeglądający elementy tablicy z określonego zakresu.
static
<T> T
last(Object[] values, Class<T> clazz)
          Wyszukuje i zwraca ostatni obiekt o klasie T, lub null, jeśli takiej wartości brak null safe method
static
<T> T
last(T[] values)
          Zwraca ostatni obiekt w tablicy, lub null, jeśli tablica jest pusta null safe method
static
<Auto> Auto
make(Class<?> type, int size)
           
static
<Auto> Auto
make(Class<?> type, int size, Object value)
           
static
<Auto> Auto
make(int size, Object value)
           
static
<T> T[]
makeT(Class<T> component, int size)
          Tworzy nową tablicę o podanym rozmiarze, która może przechowywać obiekty podanego typu.
static
<T> T[]
makeT(Class<T> component, int size, T value)
           
static
<T> T[]
makeT(int size, T value)
           
static
<Auto> Auto
shift(Object values)
          Zobacz: shift
static
<T> T
shift(T[] values)
          Usuwa pierwszy element z tablicy i przesuwa wszystkie pozostałe wartości w lewo.
static int size(Object values)
           
static
<T> int
size(T[] values)
          Zwraca rozmiar tablicy.
static
<K,V> void
sort(V[] values, int[] keys)
          Zobacz: sort
static
<K extends Comparable<K>,V>
void
sort(V[] values, K[] keys)
          Sortuje podaną tablicę ustalając porządek na podstawie porówań elementów z drugiej tablicy z kluczami.
static
<Auto> Auto
toArray(Class<?> type, List<?> source)
          Konwertuje listę elementów na tablicę o podanym typie, dokonując po drodze odpowiednich rzutowań i unbox'owań, jeśli są konieczne.
static
<Auto> Auto
unshift(Object values)
          Zobacz: unshift
static
<T> T
unshift(T[] values)
          Usuwa ostatni element z tablicy i przesuwa wszystkie pozostałe wartości w prawo.
static
<T> List<T>
wrap(Class<?> clazz, Object array)
          Tworzy listę odzwierciedlającą podaną tablicę.
static
<T> List<T>
wrap(Object array)
          Tworzy listę odzwierciedlającą podaną tablicę.
static
<T> List<T>
wrap(T[] values)
          Tworzy listę odzwierciedlającą podaną tablicę.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

get

public static <T> T get(T[] values,
                        int index,
                        T ddefault)
Pobiera index-ty element z tablicy, lub zwraca wartość domyślną, jeśli tablica ma mniejszy rozmiar niż konieczne.
null safe method

Type Parameters:
T -
Parameters:
values -
index -
ddefault - wartość domyślna
Returns:

get

public static <T> T get(T[] values,
                        int index)
Pobiera index-ty element z tablicy, lub zwraca null, jeśli tablica ma mniejszy rozmiar niż konieczne
null safe method

Type Parameters:
T -
Parameters:
values -
index -
Returns:

first

public static <K,T extends K> T first(K[] values,
                                      Class<T> clazz)
Wyszukuje i zwraca pierwszy obiekt o klasie T, lub null, jeśli takiej wartości brak
null safe method

Type Parameters:
T -
Parameters:
values - tablica, w której obiekt klasy jest szukany
clazz - szukana klasa
Returns:

first

public static <T> T first(T[] values)
Zwraca pierwszy obiekt w tablicy, lub null, jeśli tablica jest pusta
null safe method

Type Parameters:
T -
Parameters:
values - tablica, w której obiekt klasy jest szukany
Returns:

last

public static <T> T last(Object[] values,
                         Class<T> clazz)
Wyszukuje i zwraca ostatni obiekt o klasie T, lub null, jeśli takiej wartości brak
null safe method

Type Parameters:
T -
Parameters:
values - tablica, w której obiekt klasy jest szukany
clazz - szukana klasa
Returns:

last

public static <T> T last(T[] values)
Zwraca ostatni obiekt w tablicy, lub null, jeśli tablica jest pusta
null safe method

Type Parameters:
T -
Parameters:
values - tablica, w której obiekt klasy jest szukany
Returns:

size

public static <T> int size(T[] values)
Zwraca rozmiar tablicy.
null safe method

Type Parameters:
T -
Parameters:
values -
Returns:

size

public static int size(Object values)

isEmpty

public static <T> boolean isEmpty(T[] values)
Sprawdza czy tablica jest pusta.
null safe method

Type Parameters:
T -
Parameters:
values -
Returns:

isEmpty

public static <T> boolean isEmpty(Object values)
Sprawdza czy tablica jest pusta.
null safe method

Type Parameters:
T -
Parameters:
values -
Returns:

clip

public static <T> T[] clip(T[] array,
                           int size)
Przycina tablicę, jeśli tablica ma długość większą od podanej granicy.

Type Parameters:
T -
Parameters:
array -
size - maksymalna długość tablicy
Returns:
list albo nowa tablica, jeśli konieczne było obcięcie

clip

public static <ArrayT> ArrayT clip(ArrayT array,
                                   int size)

asList

public static <T> List<T> asList(T... values)
Tworzy listę odzwierciedlającą podaną tablicę. Modyfikacja listy zmienia zawartość tablicy, i vice versa. Jeśli podana tablica elementów jest pusta, zwraca pustą listę. Jeśli podana tablica jest równa NULL, zwraca pustą listę.
null safe method

Type Parameters:
T -
Parameters:
values -
Returns:

wrap

public static <T> List<T> wrap(T[] values)
Tworzy listę odzwierciedlającą podaną tablicę. Modyfikacja listy zmienia zawartość tablicy, i vice versa. Jeśli podana tablica elementów jest pusta, zwraca pustą listę. Jeśli podana tablica jest równa NULL, zwraca pustą listę.
null safe method

Type Parameters:
T -
Parameters:
values -
Returns:

wrap

@Meta.Unsafe
public static <T> List<T> wrap(Object array)
Tworzy listę odzwierciedlającą podaną tablicę. Modyfikacja listy zmienia zawartość tablicy, i vice versa. Jeśli podana tablica elementów jest pusta, zwraca pustą listę. Jeśli podana tablica jest równa NULL, zwraca pustą listę. Jeśli jako argument podano obiekt implementujący List, to żadna konwersja nie jest przeprowadzana.
null safe method

Type Parameters:
T -
Parameters:
array - tablica typu prostego, np int[]
Returns:

wrap

@Meta.Unsafe
public static <T> List<T> wrap(Class<?> clazz,
                                           Object array)
Tworzy listę odzwierciedlającą podaną tablicę. Modyfikacja listy zmienia zawartość tablicy, i vice versa. Jeśli podana tablica elementów jest pusta, zwraca pustą listę. Jeśli podana tablica jest równa NULL, zwraca pustą listę. Jeśli jako argument podano obiekt implementujący List, to żadna konwersja nie jest przeprowadzana.

Funkcja umożliwia 'transparentne' rzutowanie typów prostych, np pozwala traktować tablicę long[] jako listę List<Byte>. Konwersja jest wykonywana natywnie przez system hostujący (a nie przez VM!). Przekłada się to przede wszystkim na względnie większą wydajność kosztem nieprzenośności kodu ze względu na endianess.

null safe method

Type Parameters:
T -
Parameters:
clazz - typ tablicy, np int[].class
array -
Returns:

toArray

public static <Auto> Auto toArray(Class<?> type,
                                  List<?> source)
                    throws ClassCastException
Konwertuje listę elementów na tablicę o podanym typie, dokonując po drodze odpowiednich rzutowań i unbox'owań, jeśli są konieczne. Zwrócona tablica jest niezależna od listy.

Type Parameters:
T -
Parameters:
array -
source -
Returns:
Throws:
ClassCastException - jeśli konwersja elementów jest niemożliwa do przeprowadzenia

sort

public static <K extends Comparable<K>,V> void sort(V[] values,
                                                    K[] keys)
Sortuje podaną tablicę ustalając porządek na podstawie porówań elementów z drugiej tablicy z kluczami.

Uwaga! Sortowanie nie odbywa się 'in place', złożoność pamięciowa wynosi O(N). Na standardowej VM około 16N bajtów.

Type Parameters:
K -
V -
Parameters:
values -
keys -

sort

public static <K,V> void sort(V[] values,
                              int[] keys)
Zobacz: sort

Type Parameters:
K -
V -
Parameters:
values -
keys -

make

public static <Auto> Auto make(Class<?> type,
                               int size)

make

public static <Auto> Auto make(Class<?> type,
                               int size,
                               Object value)

make

public static <Auto> Auto make(int size,
                               Object value)

makeT

public static <T> T[] makeT(Class<T> component,
                            int size)
Tworzy nową tablicę o podanym rozmiarze, która może przechowywać obiekty podanego typu. Metoda nie nadaje się do tworzenia tablic typu prostego. Do utworzenia takich tablic użyj jednej z funkcji #nCopies.

Type Parameters:
T -
Parameters:
component -
size -
Returns:

makeT

public static <T> T[] makeT(Class<T> component,
                            int size,
                            T value)

makeT

public static <T> T[] makeT(int size,
                            T value)

shift

public static <Auto> Auto shift(Object values)
Zobacz: shift

Parameters:
values -
Returns:

shift

public static <T> T shift(T[] values)
Usuwa pierwszy element z tablicy i przesuwa wszystkie pozostałe wartości w lewo. Uwaga! Ostatni element po operacji shift jest zduplikowany!

Type Parameters:
T -
Parameters:
values -
Returns:
usunięta wartość

unshift

public static <Auto> Auto unshift(Object values)
Zobacz: unshift

Parameters:
values -
Returns:

unshift

public static <T> T unshift(T[] values)
Usuwa ostatni element z tablicy i przesuwa wszystkie pozostałe wartości w prawo. Uwaga! Pierwszy element po operacji unshift jest zduplikowany!

Type Parameters:
T -
Parameters:
values -
Returns:
usunięta wartość

concat

public static <ArrayT> ArrayT concat(ArrayT first,
                                     ArrayT second)
Zobacz: concat

Parameters:
first -
second -
Returns:

concat

public static <T> T[] concat(T[] first,
                             T[] second)
Łączy zawartość podanych tablic. Nowa tablica zawiera dokładnie te same wartości, co tablice źródłowe. To znaczy: obiekty z tablic nie są kopiowane za pomocą metody clone lub podobnej - przenoszone sdą referencje.

Type Parameters:
T -
Parameters:
first -
second -
Returns:

iterator

public static <T> ListIterator<T> iterator(T[] array)
Zwraca iterator przeglądający elementy tablicy.

Type Parameters:
T -
Parameters:
array - tablica, po której porusza się iterator
Returns:

iterator

public static <T> ListIterator<T> iterator(T[] array,
                                           int size,
                                           int first)
Zwraca iterator przeglądający elementy tablicy z określonego zakresu.

Type Parameters:
T -
Parameters:
array - tablica, po której porusza się iterator
size - rozmiar przeglądanego zakresu
first - początek przeglądanego zakresu
Returns:

arraycopy

public static <T> T[] arraycopy(T[] target,
                                Object[] source)

Kopiuje zawartość tablicy obiektów do wskazanej tablicy docelowej, wykonując odpowiedniego rzutowania dla każdego elementu osobno. Jeśli zawartość nie może się zmieścić w tablicy docelowej, alokowana jest nowa tablica o odpowiednim typie.

Metoda nie nadaje się do tworzenia tablic typu prostego. Głównym zastosowaniem metody jest grupowe rzutowanie na konkretny typ T

Type Parameters:
T -
Parameters:
target -
source -
Returns:
target lub nowa zaalokowana tablica, jeśli zawartość nie mogła się zmieścić w tablicy podanej jako docelowa.

arraycopy

public static <T> T[] arraycopy(T[] source)
Kopiuje zawartość podanej tablicy. Metoda posiada przeładowane wersje przeznaczone do obsługi tablic obiektów, jak również tablic typów prostych (w takim wypadku tracona jest informacja o typie).

Type Parameters:
T -
Parameters:
source -
Returns:

arraycopy

public static <ArrayT> ArrayT arraycopy(ArrayT source)
Kopiuje zawartość podanej tablicy. Metoda posiada przeładowane wersje przeznaczone do obsługi tablic obiektów, jak również tablic typów prostych (w takim wypadku tracona jest informacja o typie).

Parameters:
source -
Returns:

indexOf

public static <T> int indexOf(T[] array,
                              T value)
Wyszukuje w tablicy pierwszy element równy podanej wartości i zwraca pozycję elementu.

Type Parameters:
T -
Parameters:
array -
value -
Returns:
pozycja elementu równego value lub -1, jeśli nie znaleziono elementu.

contains

public static <T> boolean contains(T[] array,
                                   T value)
Sprawdza, czy podana tablica zawiera element równy podanemu argumentowi.

Type Parameters:
T -
Parameters:
array -
value -
Returns:

apply

public static <S> Object[] apply(S[] values,
                                 Function<?,S> function)

inverse

public static <T> Object[] inverse(T[] values,
                                   CoFunction<T,?> function)


Copyright © 2013. All Rights Reserved.