|
|
@@ -14,7 +14,7 @@ import java.util.Iterator;
|
|
|
import net.ranides.assira.generic.Function;
|
|
|
|
|
|
/**
|
|
|
- * Generyczne operacje na kolekcjach. Jeśli to możliwe, korzystać z innych klas
|
|
|
+ * Generyczne operacje na kolekcjach. Jeśli to możliwe, korzystać z innych klas
|
|
|
* dedykowanych dla konkretnego typu kolekcji, ponieważ poniższe metody opierają
|
|
|
* się głównie na iteratorach i często mają bardzo kiepską złożoność rzędu O(N)
|
|
|
* @author ranides
|
|
|
@@ -28,7 +28,7 @@ public final class CollectionUtils {
|
|
|
/**
|
|
|
* Pobiera index-ty element z kolekcji, lub zwraca wartość domyślną, jeśli
|
|
|
* kolekcja ma mniejszy rozmiar niż konieczne.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
* @param <T>
|
|
|
* @param values
|
|
|
@@ -51,7 +51,7 @@ public final class CollectionUtils {
|
|
|
/**
|
|
|
* Pobiera index-ty element z kolekcji, lub zwraca null, jeśli
|
|
|
* kolekcja ma mniejszy rozmiar niż konieczne.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
* @param <T>
|
|
|
* @param values
|
|
|
@@ -65,9 +65,9 @@ public final class CollectionUtils {
|
|
|
|
|
|
/**
|
|
|
* Wyszukuje i zwraca pierwszy obiekt o klasie T, lub null, jeśli takiej wartości brak
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
- * @param <T>
|
|
|
+ * @param <T>
|
|
|
* @param values kolekcja, w której obiekt klasy jest szukany
|
|
|
* @param clazz szukana klasa
|
|
|
* @return
|
|
|
@@ -85,9 +85,9 @@ public final class CollectionUtils {
|
|
|
|
|
|
/**
|
|
|
* Wyszukuje i zwraca pierwszy obiekt w kolekcji, lub null, jeśli kolekcja pusta.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
- * @param <T>
|
|
|
+ * @param <T>
|
|
|
* @param values kolekcja, z której obiekt jest zwracany
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -101,7 +101,7 @@ public final class CollectionUtils {
|
|
|
* Jeśli obiekt jest kolekcją lub iteratorem zwraca pierwszy element.
|
|
|
* Jeśli innym obiektem, zwraca po prostu ten obiekt.
|
|
|
* Jeśli kolekcja jest pusta - zwraca null.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
* @param values kolekcja, iterator lub zwykły obiekt
|
|
|
* @return psuedo-pierwszy element
|
|
|
@@ -121,9 +121,9 @@ public final class CollectionUtils {
|
|
|
|
|
|
/**
|
|
|
* Wyszukuje i zwraca ostatni obiekt o klasie T, lub null, jeśli takiej wartości brak.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
- * @param <T>
|
|
|
+ * @param <T>
|
|
|
* @param values kolekcja, w której obiekt klasy jest szukany
|
|
|
* @param clazz szukana klasa
|
|
|
* @return
|
|
|
@@ -141,9 +141,9 @@ public final class CollectionUtils {
|
|
|
|
|
|
/**
|
|
|
* Wyszukuje i zwraca pierwszy obiekt w kolekcji, lub null, jeśli kolekcja pusta
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
- * @param <T>
|
|
|
+ * @param <T>
|
|
|
* @param values kolekcja, z której obiekt jest zwracany
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -159,7 +159,7 @@ public final class CollectionUtils {
|
|
|
* Jeśli obiekt jest kolekcją lub iteratorem zwraca pierwszy element.
|
|
|
* Jeśli innym obiektem, zwraca po prostu ten obiekt.
|
|
|
* Jeśli kolekcja jest pusta - zwraca null.
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
* @param values kolekcja, iterator lub zwykły obiekt
|
|
|
* @return psuedo-pierwszy element
|
|
|
@@ -204,7 +204,7 @@ public final class CollectionUtils {
|
|
|
/**
|
|
|
* Sprawdza, czy kolekcje mają ten sam rozmiar.
|
|
|
* Kolekcje, które są równe {@code null} traktowane są jako puste (rozmiar 0).
|
|
|
- *
|
|
|
+ *
|
|
|
* <div class="message-note">{@code null} safe method</div>
|
|
|
* @param <T1>
|
|
|
* @param <T2>
|
|
|
@@ -215,7 +215,7 @@ public final class CollectionUtils {
|
|
|
public static <T1,T2> boolean equalSize(Collection<T1> a, Collection<T2> b) {
|
|
|
return size(a) == size(b);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Sprawdza, czy kolekcje zawierają te same elementy ignorując kolejność.
|
|
|
* Uwaga: bardzo kosztowna metoda, ponieważ kopiuje a następnie sortuje obie
|
|
|
@@ -223,7 +223,7 @@ public final class CollectionUtils {
|
|
|
* @param <T>
|
|
|
* @param a
|
|
|
* @param b
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
*/
|
|
|
public static <T> boolean equalContent(Collection<T> a, Collection<T> b) {
|
|
|
if( a.size() != b.size() ){
|
|
|
@@ -234,7 +234,7 @@ public final class CollectionUtils {
|
|
|
if( a.equals(b) || b.equals(a) ) {
|
|
|
return true;
|
|
|
}
|
|
|
- // dużo kopiowania, na dodatek mamy sortowanie, czyli złożoność
|
|
|
+ // dużo kopiowania, na dodatek mamy sortowanie, czyli złożoność
|
|
|
// na pamięć O(N) oraz operacje O(N*log(N)) + O(N)
|
|
|
Object[] asort = a.toArray();
|
|
|
Object[] bsort = b.toArray();
|
|
|
@@ -248,7 +248,7 @@ public final class CollectionUtils {
|
|
|
* @param <T>
|
|
|
* @param values
|
|
|
* @param size maksymalny rozmiar kolekcji
|
|
|
- * @return
|
|
|
+ * @return
|
|
|
* "view" kolekcji podanej jako argument. Modyfikacja obciętej kolekcji
|
|
|
* ma wpływ na kolekcję źródłową.
|
|
|
*/
|
|
|
@@ -311,12 +311,12 @@ public final class CollectionUtils {
|
|
|
/**
|
|
|
* Konwertuje podany obiekt iterable na kolekcję o rozmiarze równym {@code size}.
|
|
|
* Ponieważ na podstawie iteratora nie można wydedukować rozmiaru zbioru,
|
|
|
- * podana wartość {@code size} musi być odpowiednia, tzn nie może być
|
|
|
+ * podana wartość {@code size} musi być odpowiednia, tzn nie może być
|
|
|
* większa niż ilość elementów zwróconych przez iterator.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param <T>
|
|
|
* @param size
|
|
|
- * @param iterator
|
|
|
+ * @param iterable
|
|
|
* @return
|
|
|
*/
|
|
|
public static <T> Collection<T> asCollection(final int size, final Iterable<T> iterable) {
|
|
|
@@ -327,7 +327,7 @@ public final class CollectionUtils {
|
|
|
public int size() { return size; }
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Zwraca iterator transformujący leniwie elementy za pomocą podanej funkcji odwzorującej.
|
|
|
* @param <T>
|
|
|
@@ -352,7 +352,7 @@ public final class CollectionUtils {
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Zwraca kolekcję transformującą leniwie elementy za pomocą podanej funkcji odwzorującej.
|
|
|
* @param <T>
|
|
|
@@ -373,5 +373,5 @@ public final class CollectionUtils {
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|