Moduł Util udostępnia różnego rodzaju funkcje użytkowe do wykonywania operacji na tablicach, listach, mapach.
Operacje na tablicach
Do tworzenia tablic służą następujące funkcje
- Object[] emptyTable(Long n) - tworzy i zwraca n-elementową pustą tablicę; elementy tablicy mają wartość null
- Object[] emptyTable(Long tableLength, Object initValue) - tworzy i zwraca n-elementową pustą tablicę; elementy tablicy mają wartość initValue
- Object[] asArray(Collection list) - tworzy i zwraca tablicę z kolekcji list
Do określania długości tablicy (liczby elementów w tablicy) służy funkcja Long length(Object[] table), gdzie table oznacza tablicę.
Do wstawiania elementów do tablicy służy funkcja void set(Object[] table, Long n, Object value), która n-temu elementowi tablicy table przypisuje wartość value.
Do pobierania elementów z tablicy służy funkcja void get(Object[] table, Long n), która zwraca wartość n-tego elementu tablicy table.
Do wyszukiwania elementów w tablicy służy funkcja Long find(Object[] table, Object object), która zwraca indeks elementu tablicy table, który ma wartość object. Jeżeli element o wartości object nie istnieje w tablicy, zwracana jest wartość null.
Do sortowania elementów tablicy w kolejności ich wartości służy funkcja void sort(Object[] table), której argumentem jest tablica do posortowania.
Aby odwrócić kolejność elementów tablicy należy użyć funkcji Object[] reverse(Object[] table), która zwraca tablicę elementów w kolejności odwrotnej w stosunku do table.
UWAGA
Jeżeli drugi argument metody emptyTable będzie referencją, wówczas każdy element utworzonej tablicy będzie referencją do tego samego obiektu a nie referencją do klonu obiektu. W rezultacie wynikiem wykonania kodu
$=(@twoD, $emptyTable(3, $emptyTable(3)))
$set((Object[])$get($@twoD, 0), 0, "Element (0,0)")
$@twoD
będzie
[[Element (0,0) ; null ; null] ; [Element (0,0) ; null ; null] ; [Element (0,0) ; null ; null]]
a nie jak można by oczekiwać
[[Element (0,0) ; null ; null] ; [null ; null ; null] ; [null ; null ; null]]
Operacje na tablicach bajtów
Do tworzenia tablic bajtów służą następujące funkcje
- byte[] emptyByteTable(Long length) - tworzy i zwraca tablicę bajtów o długości length; każdy bajt w tablicy jest inicjowany wartością null
- byte[] emptyByteTable(Long length, Long initValue) - tworzy i zwraca tablicę bajtów o długości length; każdy bajt w tablicy jest inicjowany wartością initValue
Do określania długości tablicy bajtów (ilości bajtów w tablicy) służy funkcja Long length(byte[] value), gdzie value jest tablicą bajtów.
Do ustawiania wartości bajtów w tablicy służy funkcja void set(byte[] table, Long n, Long value), która n-temu bajtowi w tablicy table przypisuje wartość value.
Do pobierania wartości bajtów z tablicy służy funkcja Long get(byte[] table, Long n), która zwraca wartość n-tego bajtu z tablicy table.
Operacje na listach
Do tworzenia list służą funkcje
- LinkedList emptyList() - tworzy i zwraca pustą listę
- List asList(Object[] table) - tworzy i zwraca listę z tablicy table
Do określania właściwości listy służą następujące funkcje
- Boolean isEmpty(Collection list) - zwraca true jeśli lista list jest pusta, w przeciwnym przypadku zwraca false
- Boolean isNotEmpty(Collection list) - zwraca true jeśli lista list nie jest pusta, w przeciwnym przypadku zwraca false
- Long length(Collection list) - zwraca długość listy list
Do umieszczania elementów na liście służą następujące funkcje
- void add(Collection list, Object object) - dodaje do listy list obiekt object
- void add(Collection list1, Collection list2) - dodaje do listy list1 zawartość listy list2
Do ustawiania wartości elementów listy służy funkcja void set(List list, Long n, Object value), która n-temu elementowi listy list przypisuje wartość value.
Do pobierania elementów z listy służą następujące funkcje
- Object get(List list, Long n) - zwraca n-ty element listy list
- LinkedList getColumn(Collection list, Long n) - zwraca listę pojedynczych elementów wyodrębnionych z n-tej kolumny każdej z tablic z listy tablic list.
- LinkedList getChildren(Collection rows, Object rootId) - dla hierarchicznej listy tablic rows zwraca listę elementów podrzędnych w stosunku do elementu o identyfikatorze rootId (pierwszą wartością każdej tablicy na liście rows jest identyfikator elementu listy, a drugim identyfikator elementu do niego nadrzędnego)
- LinkedList getChildren(Collection rows, Object rootId, Boolean includeRoot) - dla hierarchicznej listy tablic rows zwraca listę elementów podrzędnych w stosunku do elementu o identyfikatorze rootId (pierwszą wartością każdej tablicy na liście rows jest identyfikator elementu listy, a drugim identyfikator elementu do niego nadrzędnego); jeżeli includeRoot ma wartość true zwracana lista zawiera element o identyfikatorze rootId, w przeciwnym przypadku nie zawiera tego elementu.
- List subList(List list, Long n, Long m) - zwraca fragment listy list od n-tego elementu (włącznie) do m-tego elementu (wyłącznie)
Do usuwania elementów listy służą następujące funkcje
- void remove(Collection list, Object object)' - usuwa obiekt object z listy list
- void removeAll(Collection list, Object object) - usuwa wszystkie wystąpienia obiektu object z listy list
Do sortowania elementów listy służą funkcje
- List sort(List list, Long n) - zwraca listę, która jest listą tablic list posortowaną względem wartości n-tej kolumny tych tablic
- List sort(List list, Long n, Boolean ascentSort, Boolean nullsLast, Boolean caseSensitive) - zwraca listę, która jest listą tablic list posortowaną względem wartości n-tej kolumny tych tablic; jeżeli ascentSort ma wartość true lista sortowana jest rosnąco, w przeciwnym przypadku - malejąco; jeżeli nullsLast ma wartość true elementy o wartości null trafiają na koniec listy, w przeciwnym przypadku - na początek; jeżeli caseSensitive ma wartość true przy sortowaniu jest uwzględniana wielkość liter, w przeciwnym przypadku nie jest uwzględniana.
Do odwracania kolejności elementów listy służy funkcja void reverse(List list), której argumentem jest lista, której kolejność elementów ma zostać odwrócona.
Operacje na mapach
Do tworzenia map służą funkcje
- HashMap createMap(Object[] keys, Object[] values) - tworzy i zwraca mapę z podanych tablic kluczy keys i wartości values
- HashMap emptyMap() - tworzy i zwraca pustą mapę
Do określania właściwości mapy służą następujące funkcje
- Boolean containsKey(Map map, Object key) - zwraca true jeśli mapa map' zawiera klucz key, w przeciwnym przypadku zwraca false
- Boolean containsValue(Map map, Object value) - zwraca true jeśli mapa map' zawiera wartość value, w przeciwnym przypadku zwraca false
- Boolean isEmpty(Map map) - zwraca true jeżeli mapa map jest pusta, w przeciwnym przypadku zwraca false
- Boolean isNotEmpty(Map map) - zwraca true jeżeli mapa map nie jest pusta, w przeciwnym przypadku zwraca false
- Long size(Map map) - zwraca ilość elementów w mapie map
Do umieszczania elementów w mapie służą następujące funkcje
- void put(Map map, Object key, Object value) - dodaje do mapy map element o kluczu key i wartości value (jeżeli podany klucz już występuje w mapie, wartość jego zostaje nadpisana)
- void add(Map map1, Map map2) - dodaje do mapy map1 zawartość mapy map2
Do pobierania elementów z mapy służą następujące funkcje
- Object get(Map map, Object key) - zwraca wartość elementu mapy map o kluczu key
- Object[] mapKeys(Map map) - zwraca tablicę kluczy elementów mapy map
- Collection mapValues(Map map) - zwraca listę wartości elementów mapy map
Do usuwania elementów z mapy służy funkcja
- void remove(Map map, Object key) - usuwa w mapy map element o kluczu key
Inne funkcje
Pozostałe funkcje zaimplementowane w module Util
- String base64(byte[] bytes) - zwraca ciąg znaków reprezentujący dane binarne bytes zakodowane do formatu BASE64
- String formatMoneyAmountUsingWords_PL(BigDecimal amount) - generuje słowny zapis kwoty amount
- String removePath(String fileName) - zwraca nazwę pliku wyekstrahowaną ze ścieżki do pliku fileName
- String urlEncode(String s) - koduje ciąg znaków s do postaci x-www-form-urlencoded
- String urlDecode(String s) - dekoduje ciąg znaków s zakodowany w postaci x-www-form-urlencoded
- void loremIpsum(Long count) - wypisuje na ekran count słów "Lorem ipsum"
- Object deepFind(Object in, Object object) - wyszukuje wartości object wewnątrz wielowymiarowej struktury danych in złożonej z tablic i list; zwraca strukturę nadrzędną do znalezionej object
- String toHexString(byte[] bytes) - zwraca ciąg znaków reprezentujący tablicę bajtów bytes w reprezentacji szesnastkowej
Operacje na tablicach
$=(@table, $util.emptyTable(5))
$util.set($@table, 0, "r")
$util.set($@table, 1, "n")
$util.set($@table, 2, "w")
$util.set($@table, 3, "o")
$util.set($@table, 4, "g")
$util.sort($@table)
$=(@element, (String)null)
$for(@element, $util.reverse($@table), {$@element})
Operacje na tablicach bajtów
$=(@bytes, $util.emptyByteTable(6))
$util.set($@bytes, 0, 106)
$util.set($@bytes, 1, 80)
$util.set($@bytes, 2, 65)
$util.set($@bytes, 3, 76)
$util.set($@bytes, 4, 73)
$util.set($@bytes, 5, 79)
$toString($@bytes, "ASCII")
Operacje na listach - wyświetlenie elementów z gałęzi drzewa rozpoczynającej się elementem o identyfikatorze 3
$=(@tree, $util.asList([[1, null], [2, 1], [3, 1], [4, 1], [5, 3], [6, 3], [7, 6]]))
$=(@list, $util.sort($util.getColumn($util.getChildren($@tree, 3, true), 0), 0))
$=(@element, (Object[])null)
$for(@element, $@list, {
$@element<br>
})
Operacje na mapach
$=(@digits, $util.emptyMap())
$util.put($@digits, 0, "zero")
$util.put($@digits, 1, "jeden")
$util.put($@digits, 2, "dwa")
$util.put($@digits, 3, "trzy")
$util.put($@digits, 4, "cztery")
$util.put($@digits, 5, "pięć")
$util.put($@digits, 6, "sześć")
$util.put($@digits, 7, "siedem")
$util.put($@digits, 8, "osiem")
$util.put($@digits, 9, "dziewięć")
$util.put($@digits, 10, "dziesięć")
$util.remove($@digits, 10)
$=(@digit, (Long)null)
$for(@digit, $util.mapKeys($@digits), {
$@digit => $util.get($@digits, $@digit) <br>
})