Guawa - szybki przewodnik
Co to jest guawa?
Guava jest biblioteką typu open source, opartą na Javie i zawiera wiele podstawowych bibliotek Google, które są używane w wielu ich projektach. Ułatwia najlepsze praktyki kodowania i pomaga zredukować błędy w kodowaniu. Udostępnia metody narzędziowe do kolekcji, buforowania, obsługi elementów podstawowych, współbieżności, typowych adnotacji, przetwarzania ciągów, operacji we / wy i walidacji.
Korzyści z guawy
Standardized - Biblioteką Guava zarządza Google.
Efficient - Jest to niezawodne, szybkie i wydajne rozszerzenie standardowej biblioteki Java.
Optimized - Biblioteka jest wysoce zoptymalizowana.
Functional Programming - Dodaje funkcjonalne możliwości przetwarzania do języka Java.
Utilities - Zapewnia wiele klas narzędziowych, które są regularnie wymagane przy tworzeniu aplikacji programistycznych.
Validation - Zapewnia standardowy, bezpieczny mechanizm walidacji.
Best Practices - Podkreśla najlepsze praktyki.
Rozważ następujący fragment kodu.
public class GuavaTester {
public static void main(String args[]) {
GuavaTester guavaTester = new GuavaTester();
Integer a = null;
Integer b = new Integer(10);
System.out.println(guavaTester.sum(a,b));
}
public Integer sum(Integer a, Integer b) {
return a + b;
}
}
Uruchom program, aby uzyskać następujący wynik.
Exception in thread "main" java.lang.NullPointerException
at GuavaTester.sum(GuavaTester.java:13)
at GuavaTester.main(GuavaTester.java:9)
Poniżej przedstawiono problemy z kodem.
sum () nie dba o żaden z parametrów, które mają być przekazane jako null.
funkcja wywołująca nie martwi się również o przypadkowe przekazanie wartości null do metody sum ().
Po uruchomieniu programu występuje wyjątek NullPointerException.
Aby uniknąć powyższych problemów, należy przeprowadzić zerową kontrolę w każdym miejscu, w którym występują takie problemy.
Spójrzmy na użycie Optional, dostarczonej przez Guava klasy Utility, do rozwiązania powyższych problemów w ustandaryzowany sposób.
import com.google.common.base.Optional;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester guavaTester = new GuavaTester();
Integer invalidInput = null;
Optional<Integer> a = Optional.of(invalidInput);
Optional<Integer> b = Optional.of(new Integer(10));
System.out.println(guavaTester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
return a.get() + b.get();
}
}
Uruchom program, aby uzyskać następujący wynik.
Exception in thread "main" java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210)
at com.google.common.base.Optional.of(Optional.java:85)
at GuavaTester.main(GuavaTester.java:8)
Rozumiemy ważne koncepcje powyższego programu.
Optional - Klasa narzędziowa, aby kod poprawnie używał wartości null.
Optional.of- Zwraca instancję klasy Optional, która ma być użyta jako parametr. Sprawdza przekazaną wartość, a nie „null”.
Optional.get - Pobiera wartość danych wejściowych przechowywanych w klasie Optional.
Używając klasy Optional, możesz sprawdzić, czy metoda obiektu wywołującego przekazuje odpowiedni parametr, czy nie.
Konfiguracja środowiska lokalnego
Jeśli nadal chcesz skonfigurować środowisko pod kątem języka programowania Java, w tej sekcji omówiono sposób pobierania i konfigurowania środowiska Java na komputerze. Wykonaj poniższe czynności, aby skonfigurować środowisko.
Java SE jest dostępna bezpłatnie pod linkiem Pobierz Javę . Więc pobierasz wersję opartą na systemie operacyjnym.
Postępuj zgodnie z instrukcjami, aby pobrać Javę i uruchomić .exeaby zainstalować Javę na swoim komputerze. Po zainstalowaniu Javy na swoim komputerze należałoby ustawić zmienne środowiskowe, aby wskazywały na prawidłowe katalogi instalacyjne -
Konfigurowanie ścieżki dla Windows 2000 / XP
Zakładamy, że zainstalowałeś Javę w katalogu c: \ Program Files \ java \ jdk -
Kliknij prawym przyciskiem myszy „Mój komputer” i wybierz „Właściwości”.
Kliknij przycisk „Zmienne środowiskowe” na karcie „Zaawansowane”.
Teraz zmień zmienną „Path”, tak aby zawierała również ścieżkę do pliku wykonywalnego Java. Na przykład, jeśli ścieżka jest obecnie ustawiona na „C: \ WINDOWS \ SYSTEM32”, zmień ścieżkę na „C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin”.
Konfigurowanie ścieżki dla Windows 95/98 / ME
Zakładamy, że zainstalowałeś Javę w katalogu c: \ Program Files \ java \ jdk -
Edytuj plik „C: \ autoexec.bat” i dodaj na końcu następujący wiersz - „SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin”
Konfigurowanie ścieżki dla systemów Linux, UNIX, Solaris, FreeBSD
Zmienna środowiskowa PATH powinna być ustawiona tak, aby wskazywała, gdzie zostały zainstalowane pliki binarne Java. Zajrzyj do dokumentacji powłoki, jeśli masz z tym problem.
Na przykład, jeśli używasz bash jako powłoki, to dodasz następujący wiersz na końcu swojego '.bashrc: export PATH = / path / to / java: $ PATH'
Popularne edytory Java
Do pisania programów w języku Java potrzebny jest edytor tekstu. Na rynku dostępnych jest wiele wyrafinowanych IDE. Ale na razie możesz rozważyć jedną z następujących -
Notepad - Na komputerze z systemem Windows możesz użyć dowolnego prostego edytora tekstu, takiego jak Notatnik (zalecany w tym samouczku), TextPad.
Netbeans - Jest to środowisko Java IDE o otwartym kodzie źródłowym i bezpłatne, które można pobrać z witryny https://www.netbeans.org/index.html.
Eclipse - Jest to również środowisko Java IDE opracowane przez społeczność eclipse open source i można je pobrać z witryny https://www.eclipse.org/.
Pobierz archiwum guawy
Pobierz najnowszą wersję pliku jar guawa z guava-18.0.jar . W momencie pisania tego samouczka pobraliśmy guava-18.0.jar i skopiowaliśmy go do folderu C: \> Guava.
OS | Nazwa archiwum |
---|---|
Windows | guava-18.0.jar |
Linux | guava-18.0.jar |
Prochowiec | guava-18.0.jar |
Ustaw środowisko guawy
Ustaw Guava_HOMEzmienna środowiskowa, aby wskazywała lokalizację katalogu podstawowego, w którym słoik guawy jest przechowywany na twoim komputerze. Zakładając, że wyodrębniliśmy guava-18.0.jar w folderze Guava w różnych systemach operacyjnych w następujący sposób.
OS | Wynik |
---|---|
Windows | Ustaw zmienną środowiskową Guava_HOME na C: \ Guava |
Linux | export Guava_HOME = / usr / local / Guava |
Prochowiec | export Guava_HOME = / Library / Guava |
Ustaw zmienną CLASSPATH
Ustaw CLASSPATHzmienna środowiskowa wskazująca lokalizację słoika guawy. Zakładając, że przechowujesz guava-18.0.jar w folderze Guava na różnych systemach operacyjnych w następujący sposób.
OS | Wynik |
---|---|
Windows | Ustaw zmienną środowiskową CLASSPATH na% CLASSPATH%;% Guava_HOME% \ guava-18.0.jar;.; |
Linux | export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :. |
Prochowiec | export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :. |
Opcjonalny to niezmienny obiekt używany do przechowywania obiektu niezerowego. Opcjonalny obiekt jest używany do reprezentowania wartości null z brakiem wartości. Ta klasa ma różne metody narzędziowe, które ułatwiają kodowi obsługę wartości jako dostępnych lub niedostępnych zamiast sprawdzania wartości null.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.base.Optional<T> klasa -
@GwtCompatible(serializable = true)
public abstract class Optional<T>
extends Object
implements Serializable
Metody klasowe
Sr.No | Metoda i opis |
---|---|
1 | static <T> Optional<T> absent() Zwraca opcjonalne wystąpienie bez zawartego odwołania. |
2 | abstract Set<T> asSet() Zwraca niezmienny pojedynczy zestaw Set, którego jedynym elementem jest zawarte wystąpienie, jeśli jest obecne; w przeciwnym razie pusty niezmienny zestaw. |
3 | abstract boolean equals(Object object) Zwraca wartość true, jeśli obiekt jest wystąpieniem opcjonalnym i albo zawarte w nim odwołania są sobie równe lub oba są nieobecne. |
4 | static <T> Optional<T> fromNullable(T nullableReference) Jeśli nullableReference ma wartość różną od null, zwraca opcjonalne wystąpienie zawierające to odwołanie; w przeciwnym razie zwraca nieobecność (). |
5 | abstract T get() Zwraca zawarte wystąpienie, które musi być obecne. |
6 | abstract int hashCode() Zwraca kod skrótu dla tego wystąpienia. |
7 | abstract boolean isPresent() Zwraca wartość true, jeśli ten uchwyt zawiera wystąpienie (niezerowe). |
8 | static <T> Optional<T> of(T reference) Zwraca opcjonalne wystąpienie zawierające podane odwołanie niezerowe. |
9 | abstract Optional<T> or(Optional<? extends T> secondChoice) Zwraca ten parametr opcjonalny, jeśli ma obecną wartość; secondWybierz inaczej. |
10 | abstract T or(Supplier<? extends T> supplier) Zwraca zawarte wystąpienie, jeśli jest obecne; W przeciwnym razie dostawca.get (). |
11 | abstract T or(T defaultValue) Zwraca zawarte wystąpienie, jeśli jest obecne; defaultValue w przeciwnym razie. |
12 | abstract T orNull() Zwraca zawarte wystąpienie, jeśli jest obecne; null inaczej. |
13 | static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals) Zwraca wartość każdego obecnego wystąpienia z podanych opcji w kolejności, pomijając wystąpienia absent (). |
14 | abstract String toString() Zwraca reprezentację ciągu dla tego wystąpienia. |
15 | abstract <V> Optional<V> transform(Function<? super T,V> function) Jeśli instancja istnieje, jest przekształcana za pomocą danej funkcji; w przeciwnym razie zwracana jest nieobecna (). |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład klasy opcjonalnej
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import com.google.common.base.Optional;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester guavaTester = new GuavaTester();
Integer value1 = null;
Integer value2 = new Integer(10);
//Optional.fromNullable - allows passed parameter to be null.
Optional<Integer> a = Optional.fromNullable(value1);
//Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
System.out.println(guavaTester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent - checks the value is present or not
System.out.println("First parameter is present: " + a.isPresent());
System.out.println("Second parameter is present: " + b.isPresent());
//Optional.or - returns the value if present otherwise returns
//the default value passed.
Integer value1 = a.or(new Integer(0));
//Optional.get - gets the value, value should be present
Integer value2 = b.get();
return value1 + value2;
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
First parameter is present: false
Second parameter is present: true
10
Warunki wstępne zapewniają metody statyczne do sprawdzania, czy metoda lub konstruktor jest wywoływana z odpowiednim parametrem, czy nie. Sprawdza warunki wstępne. Jej metody zgłaszają wyjątek IllegalArgumentException w przypadku niepowodzenia.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.base.Preconditions klasa -
@GwtCompatible
public final class Preconditions
extends Object
Metody klasowe
Sr.No | Metoda i opis |
---|---|
1 | static void checkArgument(boolean expression) Zapewnia prawdziwość wyrażenia zawierającego jeden lub więcej parametrów metody wywołującej. |
2 | static void checkArgument(boolean expression, Object errorMessage) Zapewnia prawdziwość wyrażenia zawierającego jeden lub więcej parametrów metody wywołującej. |
3 | static void checkArgument(boolean expression, String errorMessageTemplate, Object. errorMessageArgs) Zapewnia prawdziwość wyrażenia zawierającego jeden lub więcej parametrów metody wywołującej. |
4 | static int checkElementIndex(int index, int size) Zapewnia, że indeks określa prawidłowy element w tablicy, liście lub w ciągu o rozmiarze. |
5 | static int checkElementIndex(int index, int size, String desc) Zapewnia, że indeks określa prawidłowy element w tablicy, liście lub w ciągu o rozmiarze. |
6 | static <T> T checkNotNull(T reference) Zapewnia, że odwołanie do obiektu przekazane jako parametr do metody wywołującej nie jest null. |
7 | static <T> T checkNotNull(T reference, Object errorMessage) Zapewnia, że odwołanie do obiektu przekazane jako parametr do metody wywołującej nie jest null. |
8 | static <T> T checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs) Zapewnia, że odwołanie do obiektu przekazane jako parametr do metody wywołującej nie jest null. |
9 | static int checkPositionIndex(int index, int size) Zapewnia, że indeks określa prawidłową pozycję w tablicy, liście lub w ciągu o rozmiarze. |
10 | static int checkPositionIndex(int index, int size, String desc) Zapewnia, że indeks określa prawidłową pozycję w tablicy, liście lub w ciągu o rozmiarze. |
11 | static void checkPositionIndexes(int start, int end, int size) Zapewnia, że początek i koniec określają prawidłowe pozycje w tablicy, liście lub w ciągu o rozmiarze i są uporządkowane. |
12 | static void checkState(boolean expression) Zapewnia prawdziwość wyrażenia obejmującego stan instancji wywołującej, ale bez uwzględniania żadnych parametrów w metodzie wywołującej. |
13 | static void checkState(boolean expression, Object errorMessage) Zapewnia prawdziwość wyrażenia obejmującego stan instancji wywołującej, ale bez uwzględniania żadnych parametrów w metodzie wywołującej. |
14 | static void checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) Zapewnia prawdziwość wyrażenia obejmującego stan instancji wywołującej, ale bez uwzględniania żadnych parametrów w metodzie wywołującej. |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład klasy warunków wstępnych
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import com.google.common.base.Preconditions;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester guavaTester = new GuavaTester();
try {
System.out.println(guavaTester.sqrt(-3.0));
} catch(IllegalArgumentException e) {
System.out.println(e.getMessage());
}
try {
System.out.println(guavaTester.sum(null,3));
} catch(NullPointerException e) {
System.out.println(e.getMessage());
}
try {
System.out.println(guavaTester.getValue(6));
} catch(IndexOutOfBoundsException e) {
System.out.println(e.getMessage());
}
}
public double sqrt(double input) throws IllegalArgumentException {
Preconditions.checkArgument(input > 0.0,
"Illegal Argument passed: Negative value %s.", input);
return Math.sqrt(input);
}
public int sum(Integer a, Integer b) {
a = Preconditions.checkNotNull(a, "Illegal Argument passed: First parameter is Null.");
b = Preconditions.checkNotNull(b, "Illegal Argument passed: Second parameter is Null.");
return a+b;
}
public int getValue(int input) {
int[] data = {1,2,3,4,5};
Preconditions.checkElementIndex(input,data.length, "Illegal Argument passed: Invalid index.");
return 0;
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
Illegal Argument passed: Negative value -3.0.
Illegal Argument passed: First parameter is Null.
Illegal Argument passed: Invalid index. (6) must be less than size (5)
Zamawianie może być postrzegane jako wzbogacony komparator z ulepszoną funkcją łączenia łańcuchowego, wieloma metodami użytkowymi, możliwością sortowania wielu typów itp.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.collect.Ordering<T> klasa -
@GwtCompatible
public abstract class Ordering<T>
extends Object
implements Comparator<T>
Metody klasowe
Sr.No | Metoda i opis |
---|---|
1 | static Ordering<Object> allEqual() Zwraca kolejność, która traktuje wszystkie wartości jako równe, wskazując „brak kolejności”. Przekazanie tego uporządkowania do dowolnego stabilnego algorytmu sortowania nie powoduje zmiany kolejności elementów. |
2 | static Ordering<Object> arbitrary() Zwraca dowolną kolejność dla wszystkich obiektów, dla których porównanie (a, b) == 0 implikuje a == b (równość tożsamości). |
3 | int binarySearch(List<? extends T> sortedList, T key) Przeszukuje sortList dla klucza przy użyciu algorytmu wyszukiwania binarnego. |
4 | abstract int compare(T left, T right) Porównuje dwa argumenty za porządkiem. |
5 | <U extends T> Ordering<U> compound(Comparator<? super U> secondaryComparator) Zwraca kolejność, która najpierw używa kolejności this, ale która w przypadku „remisu” jest następnie delegowana do secondComparator. |
6 | static <T> Ordering<T> compound(Iterable<? extends Comparator<? super T>> comparators) Zwraca kolejność, która próbuje każdego z podanych komparatorów w kolejności, aż zostanie znaleziony wynik niezerowy, zwraca ten wynik i zwraca zero tylko wtedy, gdy wszystkie komparatory zwracają zero. |
7 | static <T> Ordering<T> explicit(List<T> valuesInOrder) Zwraca kolejność, która porównuje obiekty zgodnie z kolejnością, w jakiej pojawiają się na podanej liście. |
8 | static <T> Ordering<T> explicit(T leastValue, T... remainingValuesInOrder) Zwraca kolejność, która porównuje obiekty zgodnie z kolejnością, w jakiej zostały one przekazane tej metodzie. |
9 | static <T> Ordering<T> from(Comparator<T> comparator) Zwraca kolejność na podstawie istniejącej instancji komparatora. |
10 | <E extends T> List<E> greatestOf(Iterable<E> iterable, int k) Zwraca k największych elementów podanej iterowalnej zgodnie z tą kolejnością, w kolejności od największego do najmniejszego. |
11 | <E extends T> List<E> greatestOf(Iterator<E> iterator, int k) Zwraca k największych elementów z podanego iteratora zgodnie z tą kolejnością, w kolejności od największego do najmniejszego. |
12 | <E extends T> ImmutableList<E> immutableSortedCopy(Iterable<E> elements) Zwraca niezmienną listę zawierającą elementy posortowane według tej kolejności. |
13 | boolean isOrdered(Iterable<? extends T> iterable) Zwraca wartość true, jeśli każdy element w iterowalnym po pierwszym jest większy lub równy elementowi, który go poprzedzał, zgodnie z tą kolejnością. |
14 | boolean isStrictlyOrdered(Iterable<? extends T> iterable) Zwraca wartość true, jeśli każdy element w iterowalnym po pierwszym jest ściśle większy niż element, który go poprzedzał, zgodnie z tą kolejnością |
15 | <E extends T> List<E> leastOf(Iterable<E> iterable, int k) Zwraca k najmniejszych elementów podanej iterowalnej zgodnie z tą kolejnością, w kolejności od najmniejszej do największej. |
16 | <E extends T> List<E> leastOf(Iterator<E> elements, int k) Zwraca k najmniejszych elementów z podanego iteratora zgodnie z tą kolejnością, w kolejności od najmniejszej do największej. |
17 | <S extends T> Ordering<Iterable<S>> lexicographical() Zwraca nową kolejność, która sortuje elementy iteracyjne, porównując odpowiednie elementy parami, aż do znalezienia wyniku niezerowego; narzuca „porządek słownikowy”. |
18 | <E extends T> E max(E a, E b) Zwraca większą z dwóch wartości zgodnie z tą kolejnością. |
19 | <E extends T> E max(E a, E b, E c, E... rest) Zwraca największą z podanych wartości zgodnie z tą kolejnością. |
20 | <E extends T> E max(Iterable<E> iterable) Zwraca największą z podanych wartości zgodnie z tą kolejnością. |
21 | <E extends T> E max(Iterator<E> iterator) Zwraca największą z podanych wartości zgodnie z tą kolejnością. |
22 | <E extends T> E min(E a, E b) Zwraca mniejszą z dwóch wartości zgodnie z tą kolejnością. |
23 | <E extends T> E min(E a, E b, E c, E... rest) Zwraca najmniejszą z podanych wartości zgodnie z tą kolejnością. |
24 | <E extends T> E min(Iterable<E> iterable) Zwraca najmniejszą z podanych wartości zgodnie z tą kolejnością. |
25 | <E extends T> E min(Iterator<E> iterator) Zwraca najmniejszą z podanych wartości zgodnie z tą kolejnością. |
26 | static <C extends Comparable> Ordering<C> natural() Zwraca kolejność możliwą do serializacji, która używa naturalnej kolejności wartości. |
27 | <S extends T> Ordering<S> nullsFirst() Zwraca kolejność, która traktuje wartość null jako mniejszą niż wszystkie inne wartości i używa jej do porównywania wartości innych niż null. |
28 | <S extends T> Ordering<S> nullsLast() Zwraca kolejność, która traktuje wartość null jako większą niż wszystkie inne wartości i używa tej kolejności do porównywania wartości innych niż null. |
29 | <F> Ordering<F> onResultOf(Function<F,? extends T> function) Zwraca nową kolejność na F, która porządkuje elementy, najpierw stosując do nich funkcję, a następnie porównując te wyniki za pomocą tego. |
30 | <S extends T> Ordering<S> reverse() Zwraca odwrotność tej kolejności; odpowiednik zamówienia Collections.reverseOrder (komparator). |
31 | <E extends T> List<E> sortedCopy(Iterable<E> elements) Zwraca zmienną listę zawierającą elementy posortowane według tej kolejności; używaj tego tylko wtedy, gdy wynikowa lista może wymagać dalszych modyfikacji lub może zawierać wartość null. |
32 | static Ordering<Object> usingToString() Zwraca kolejność, która porównuje obiekty poprzez naturalną kolejność ich reprezentacji w postaci ciągów zwróconych przez toString (). |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład zamawiania klasy
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.google.common.collect.Ordering;
public class GuavaTester {
public static void main(String args[]) {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(new Integer(5));
numbers.add(new Integer(2));
numbers.add(new Integer(15));
numbers.add(new Integer(51));
numbers.add(new Integer(53));
numbers.add(new Integer(35));
numbers.add(new Integer(45));
numbers.add(new Integer(32));
numbers.add(new Integer(43));
numbers.add(new Integer(16));
Ordering ordering = Ordering.natural();
System.out.println("Input List: ");
System.out.println(numbers);
Collections.sort(numbers,ordering );
System.out.println("Sorted List: ");
System.out.println(numbers);
System.out.println("======================");
System.out.println("List is sorted: " + ordering.isOrdered(numbers));
System.out.println("Minimum: " + ordering.min(numbers));
System.out.println("Maximum: " + ordering.max(numbers));
Collections.sort(numbers,ordering.reverse());
System.out.println("Reverse: " + numbers);
numbers.add(null);
System.out.println("Null added to Sorted List: ");
System.out.println(numbers);
Collections.sort(numbers,ordering.nullsFirst());
System.out.println("Null first Sorted List: ");
System.out.println(numbers);
System.out.println("======================");
List<String> names = new ArrayList<String>();
names.add("Ram");
names.add("Shyam");
names.add("Mohan");
names.add("Sohan");
names.add("Ramesh");
names.add("Suresh");
names.add("Naresh");
names.add("Mahesh");
names.add(null);
names.add("Vikas");
names.add("Deepak");
System.out.println("Another List: ");
System.out.println(names);
Collections.sort(names,ordering.nullsFirst().reverse());
System.out.println("Null first then reverse sorted list: ");
System.out.println(names);
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
Input List:
[5, 2, 15, 51, 53, 35, 45, 32, 43, 16]
Sorted List:
[2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
======================
List is sorted: true
Minimum: 2
Maximum: 53
Reverse: [53, 51, 45, 43, 35, 32, 16, 15, 5, 2]
Null added to Sorted List:
[53, 51, 45, 43, 35, 32, 16, 15, 5, 2, null]
Null first Sorted List:
[null, 2, 5, 15, 16, 32, 35, 43, 45, 51, 53]
======================
Another List:
[Ram, Shyam, Mohan, Sohan, Ramesh, Suresh, Naresh, Mahesh, null, Vikas, Deepak]
Null first then reverse sorted list:
[Vikas, Suresh, Sohan, Shyam, Ramesh, Ram, Naresh, Mohan, Mahesh, Deepak, null]
Klasa Objects udostępnia funkcje pomocnicze mające zastosowanie do wszystkich obiektów, takich jak equals, hashCode itp.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.base.Objects klasa -
@GwtCompatible
public final class Objects
extends Object
Metody klasowe
Sr.No | Metoda i opis |
---|---|
1 | static boolean equal(Object a, Object b) Określa, czy dwa obiekty potencjalnie zerowe są równe. |
2 | static <T> T firstNonNull(T first, T second) Przestarzałe. Zamiast tego użyj MoreObjects.firstNonNull (T, T). Ta metoda ma zostać usunięta w czerwcu 2016 r. |
3 | static int hashCode(Object... objects) Generuje kod skrótu dla wielu wartości. |
4 | static Objects.ToStringHelper toStringHelper(Class<?> clazz) Przestarzałe. Zamiast tego użyj MoreObjects.toStringHelper (Class). Ta metoda ma zostać usunięta w czerwcu 2016 r |
5 | static Objects.ToStringHelper toStringHelper(Object self) Przestarzałe. Zamiast tego użyj MoreObjects.toStringHelper (Object). Ta metoda ma zostać usunięta w czerwcu 2016 r. |
6 | static Objects.ToStringHelper toStringHelper(String className) Przestarzałe. Zamiast tego użyj MoreObjects.toStringHelper (String). Ta metoda ma zostać usunięta w czerwcu 2016 r. |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład klasy obiektów
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import com.google.common.base.Objects;
public class GuavaTester {
public static void main(String args[]) {
Student s1 = new Student("Mahesh", "Parashar", 1, "VI");
Student s2 = new Student("Suresh", null, 3, null);
System.out.println(s1.equals(s2));
System.out.println(s1.hashCode());
System.out.println(
Objects.toStringHelper(s1)
.add("Name",s1.getFirstName()+" " + s1.getLastName())
.add("Class", s1.getClassName())
.add("Roll No", s1.getRollNo())
.toString());
}
}
class Student {
private String firstName;
private String lastName;
private int rollNo;
private String className;
public Student(String firstName, String lastName, int rollNo, String className) {
this.firstName = firstName;
this.lastName = lastName;
this.rollNo = rollNo;
this.className = className;
}
@Override
public boolean equals(Object object) {
if(!(object instanceof Student) || object == null) {
return false;
}
Student student = (Student)object;
// no need to handle null here
// Objects.equal("test", "test") == true
// Objects.equal("test", null) == false
// Objects.equal(null, "test") == false
// Objects.equal(null, null) == true
return Objects.equal(firstName, student.firstName) // first name can be null
&& Objects.equal(lastName, student.lastName) // last name can be null
&& Objects.equal(rollNo, student.rollNo)
&& Objects.equal(className, student.className); // class name can be null
}
@Override
public int hashCode() {
//no need to compute hashCode by self
return Objects.hashCode(className,rollNo);
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
false
85871
Student{Name=Mahesh Parashar, Class=VI, Roll No=1}
Zakres reprezentuje interwał lub sekwencję. Służy do uzyskania zestawu liczb / ciągów leżących w określonym zakresie.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.collect.Range<C> klasa -
@GwtCompatible
public final class Range<C extends Comparable>
extends Object
implements Predicate<C>, Serializable
Metody
Sr.No | Metoda i opis |
---|---|
1 | static <C extends Comparable<?>> Range<C> all() Zwraca zakres zawierający wszystkie wartości typu C. |
2 | boolean apply(C input)Deprecated. Dostarczane tylko w celu spełnienia wymagań interfejsu Predicate; zamiast tego użyj zawiera (C). |
3 | static <C extends Comparable<?>> Range<C> atLeast(C endpoint) Zwraca zakres zawierający wszystkie wartości większe lub równe punktowi końcowemu. |
4 | static <C extends Comparable<?>> Range<C> atMost(C endpoint) Zwraca zakres zawierający wszystkie wartości mniejsze lub równe punktowi końcowemu. |
5 | Range<C> canonical(DiscreteDomain<C> domain) Zwraca kanoniczną postać tego zakresu w podanej domenie. |
6 | static <C extends Comparable<?>> Range<C> closed(C lower, C upper) Zwraca zakres zawierający wszystkie wartości większe lub równe dolnemu i mniejsze lub równe górnemu. |
7 | static <C extends Comparable<?>> Range<C> closedOpen(C lower, C upper) Zwraca zakres zawierający wszystkie wartości większe lub równe dolnemu i ściśle mniejsze niż górne. |
8 | boolean contains(C value) Zwraca wartość true, jeśli wartość mieści się w granicach tego zakresu. |
9 | boolean containsAll(Iterable<? extends C> values) Zwraca wartość true, jeśli każdy element w wartościach znajduje się w tym zakresie. |
10 | static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType) Zwraca zakres z podanego punktu końcowego, który może być włącznie (zamknięty) lub wyłączny (otwarty), bez górnej granicy. |
11 | static <C extends Comparable<?>> Range<C> encloseAll(Iterable<C> values) Zwraca minimalny zakres zawierający wszystkie podane wartości. |
12 | boolean encloses(Range<C> other) Zwraca prawdę, jeśli granice innych nie wykraczają poza granice tego zakresu. |
13 | boolean equals(Object object) Zwraca wartość true, jeśli obiekt jest zakresem mającym te same punkty końcowe i powiązane typy co ten zakres. |
14 | static <C extends Comparable<?>> Range<C> greaterThan(C endpoint) Zwraca zakres zawierający wszystkie wartości ściśle większe niż punkt końcowy. |
15 | int hashCode() Zwraca kod skrótu dla tego zakresu. |
16 | boolean hasLowerBound() Zwraca wartość true, jeśli ten zakres ma dolny punkt końcowy. |
17 | boolean hasUpperBound() Zwraca wartość true, jeśli ten zakres ma górny punkt końcowy. |
18 | Range<C> intersection(Range<C> connectedRange) Zwraca maksymalny zakres zawarty zarówno w tym zakresie, jak i w connectedRange, jeśli taki zakres istnieje. |
19 | boolean isConnected(Range<C> other) Zwraca prawdę, jeśli istnieje (prawdopodobnie pusty) zakres objęty zarówno tym, jak i innym zakresem. |
20 | boolean isEmpty() Zwraca prawdę, jeśli ten zakres ma postać [v..v) lub (v..v]. |
21 | static <C extends Comparable<?>> Range<C> lessThan(C endpoint) Zwraca zakres zawierający wszystkie wartości ściśle mniejsze niż punkt końcowy. |
22 | BoundType lowerBoundType() Zwraca typ dolnej granicy tego zakresu: BoundType.CLOSED, jeśli zakres obejmuje jego dolny punkt końcowy, BoundType.OPEN, jeśli nie. |
23 | C lowerEndpoint() Zwraca dolny punkt końcowy tego zakresu. |
24 | static <C extends Comparable<?>> Range<C> open(C lower, C upper) Zwraca zakres zawierający wszystkie wartości ściśle większe niż dolne i ściśle mniejsze niż górne. |
25 | static <C extends Comparable<?>> Range<C> openClosed(C lower, C upper) Zwraca zakres zawierający wszystkie wartości ściśle większe niż dolne i mniejsze lub równe górnemu. |
26 | static <C extends Comparable<?>> Range<C> range(C lower, BoundType lowerType, C upper, BoundType upperType) Zwraca zakres zawierający dowolną wartość od dolnej do górnej, gdzie każdy punkt końcowy może być włącznie (zamknięty) lub wyłączny (otwarty). |
27 | static <C extends Comparable<?>> Range<C> singleton(C value) Zwraca zakres zawierający tylko podaną wartość. |
28 | Range<C> span(Range<C> other) Zwraca minimalny zakres obejmujący zarówno ten, jak i inny zakres. |
29 | String toString() Zwraca ciąg znaków reprezentujący ten zakres, na przykład „[3..5)” (inne przykłady są wymienione w dokumentacji klasy). |
30 | BoundType upperBoundType() Zwraca typ górnej granicy tego zakresu: BoundType.CLOSED, jeśli zakres obejmuje swój górny punkt końcowy, BoundType.OPEN, jeśli nie. |
31 | C upperEndpoint() Zwraca górny punkt końcowy tego zakresu. |
32 | static <C extends Comparable<?>> Range<C> upTo(C endpoint, BoundType boundType) Zwraca zakres bez dolnej granicy do podanego punktu końcowego, który może być włącznie (zamknięty) lub wyłączny (otwarty). |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład klasy zakresu
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import com.google.common.collect.ContiguousSet;
import com.google.common.collect.DiscreteDomain;
import com.google.common.collect.Range;
import com.google.common.primitives.Ints;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester tester = new GuavaTester();
tester.testRange();
}
private void testRange() {
//create a range [a,b] = { x | a <= x <= b}
Range<Integer> range1 = Range.closed(0, 9);
System.out.print("[0,9] : ");
printRange(range1);
System.out.println("5 is present: " + range1.contains(5));
System.out.println("(1,2,3) is present: " + range1.containsAll(Ints.asList(1, 2, 3)));
System.out.println("Lower Bound: " + range1.lowerEndpoint());
System.out.println("Upper Bound: " + range1.upperEndpoint());
//create a range (a,b) = { x | a < x < b}
Range<Integer> range2 = Range.open(0, 9);
System.out.print("(0,9) : ");
printRange(range2);
//create a range (a,b] = { x | a < x <= b}
Range<Integer> range3 = Range.openClosed(0, 9);
System.out.print("(0,9] : ");
printRange(range3);
//create a range [a,b) = { x | a <= x < b}
Range<Integer> range4 = Range.closedOpen(0, 9);
System.out.print("[0,9) : ");
printRange(range4);
//create an open ended range (9, infinity
Range<Integer> range5 = Range.greaterThan(9);
System.out.println("(9,infinity) : ");
System.out.println("Lower Bound: " + range5.lowerEndpoint());
System.out.println("Upper Bound present: " + range5.hasUpperBound());
Range<Integer> range6 = Range.closed(3, 5);
printRange(range6);
//check a subrange [3,5] in [0,9]
System.out.println("[0,9] encloses [3,5]:" + range1.encloses(range6));
Range<Integer> range7 = Range.closed(9, 20);
printRange(range7);
//check ranges to be connected
System.out.println("[0,9] is connected [9,20]:" + range1.isConnected(range7));
Range<Integer> range8 = Range.closed(5, 15);
//intersection
printRange(range1.intersection(range8));
//span
printRange(range1.span(range8));
}
private void printRange(Range<Integer> range) {
System.out.print("[ ");
for(int grade : ContiguousSet.create(range, DiscreteDomain.integers())) {
System.out.print(grade +" ");
}
System.out.println("]");
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
[0,9] : [ 0 1 2 3 4 5 6 7 8 9 ]
5 is present: true
(1,2,3) is present: true
Lower Bound: 0
Upper Bound: 9
(0,9) : [ 1 2 3 4 5 6 7 8 ]
(0,9] : [ 1 2 3 4 5 6 7 8 9 ]
[0,9) : [ 0 1 2 3 4 5 6 7 8 ]
(9,infinity) :
Lower Bound: 9
Upper Bound present: false
[ 3 4 5 ]
[0,9] encloses [3,5]:true
[ 9 10 11 12 13 14 15 16 17 18 19 20 ]
[0,9] is connected [9,20]:true
[ 5 6 7 8 9 ]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ]
Klasa Throwables udostępnia metody narzędziowe związane z interfejsem Throwable.
Deklaracja klasy
Poniżej znajduje się deklaracja dla com.google.common.base.Throwables klasa -
public final class Throwables
extends Object
Metody klasowe
Sr.No | Metoda i opis |
---|---|
1 | static List<Throwable> getCausalChain(Throwable throwable) Pobiera łańcuch przyczyn Throwable jako listę. |
2 | static Throwable getRootCause(Throwable throwable) Zwraca najgłębszą przyczynę rzucania. |
3 | static String getStackTraceAsString(Throwable throwable) Zwraca ciąg znaków zawierający wynik metody toString (), po którym następuje pełny, rekurencyjny ślad stosu elementu do rzucania. |
4 | static RuntimeException propagate(Throwable throwable) Propaguje obiekt do rzucania w stanie takim, w jakim jest, jeśli jest to wystąpienie RuntimeException lub Error, lub w ostateczności zawija go w RuntimeException, a następnie propaguje. |
5 | static <X extends Throwable> void propagateIfInstanceOf(Throwable throwable, Class<X> declaredType) Propaguje obiekt do rzucania dokładnie tak, jak jest, wtedy i tylko wtedy, gdy jest instancją zadeklarowanego typu. |
6 | static void propagateIfPossible(Throwable throwable) Propaguje obiekt do rzucania dokładnie tak, jak jest, wtedy i tylko wtedy, gdy jest wystąpieniem RuntimeException lub Error. |
7 | static <X extends Throwable> void propagateIfPossible(Throwable throwable, Class<X> declaredType) Propaguje obiekt do rzucania dokładnie tak, jak jest, wtedy i tylko wtedy, gdy jest wystąpieniem RuntimeException, Error lub zadeklarowanego typu. |
8 | static <X1 extends Throwable,X2 extends Throwable>void propagateIfPossible(Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2) Propaguje obiekt do rzucania dokładnie tak, jak jest, wtedy i tylko wtedy, gdy jest wystąpieniem RuntimeException, Error, zadeklarowanego typu1 lub zadeklarowanego typu2. |
Dziedziczone metody
Ta klasa dziedziczy metody z następującej klasy -
- java.lang.Object
Przykład klasy przedmiotów miotanych
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import java.io.IOException;
import com.google.common.base.Objects;
import com.google.common.base.Throwables;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester tester = new GuavaTester();
try {
tester.showcaseThrowables();
} catch (InvalidInputException e) {
//get the root cause
System.out.println(Throwables.getRootCause(e));
} catch (Exception e) {
//get the stack trace in string format
System.out.println(Throwables.getStackTraceAsString(e));
}
try {
tester.showcaseThrowables1();
} catch (Exception e) {
System.out.println(Throwables.getStackTraceAsString(e));
}
}
public void showcaseThrowables() throws InvalidInputException {
try {
sqrt(-3.0);
} catch (Throwable e) {
//check the type of exception and throw it
Throwables.propagateIfInstanceOf(e, InvalidInputException.class);
Throwables.propagate(e);
}
}
public void showcaseThrowables1() {
try {
int[] data = {1,2,3};
getValue(data, 4);
} catch (Throwable e) {
Throwables.propagateIfInstanceOf(e, IndexOutOfBoundsException.class);
Throwables.propagate(e);
}
}
public double sqrt(double input) throws InvalidInputException {
if(input < 0) throw new InvalidInputException();
return Math.sqrt(input);
}
public double getValue(int[] list, int index) throws IndexOutOfBoundsException {
return list[index];
}
public void dummyIO() throws IOException {
throw new IOException();
}
}
class InvalidInputException extends Exception {
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
InvalidInputException
java.lang.ArrayIndexOutOfBoundsException: 4
at GuavaTester.getValue(GuavaTester.java:52)
at GuavaTester.showcaseThrowables1(GuavaTester.java:38)
at GuavaTester.main(GuavaTester.java:19)
Guava wprowadza wiele zaawansowanych kolekcji opartych na doświadczeniu programistów w tworzeniu aplikacji. Poniżej znajduje się lista przydatnych kolekcji -
Sr.No | Nazwa i opis kolekcji |
---|---|
1 | Multiset Rozszerzenie interfejsu Set umożliwiające zduplikowanie elementów. |
2 | Multimap Rozszerzenie interfejsu Map, dzięki czemu jego klucze mogą być mapowane na wiele wartości jednocześnie. |
3 | BiMap Rozszerzenie interfejsu Map do obsługi operacji odwrotnych. |
4 | Stół Tabela reprezentuje specjalną mapę, na której można określić dwa klucze w połączeniu w celu odniesienia się do jednej wartości. |
Guava zapewnia bardzo potężny mechanizm buforowania oparty na pamięci przez interfejs LoadingCache <K, V>. Wartości są automatycznie ładowane do pamięci podręcznej i zapewnia wiele narzędzi przydatnych do buforowania.
Deklaracja interfejsu
Poniżej znajduje się deklaracja dla com.google.common.cache.LoadingCache<K,V> interfejs -
@Beta
@GwtCompatible
public interface LoadingCache<K,V>
extends Cache<K,V>, Function<K,V>
Metody interfejsu
Sr.No | Metoda i opis |
---|---|
1 | V apply(K key) Przestarzałe. Pod warunkiem spełnienia wymagań interfejsu funkcji; użyj zamiast tego get (K) lub getUnchecked (K). |
2 | ConcurrentMap<K,V> asMap() Zwraca widok wpisów przechowywanych w tej pamięci podręcznej jako mapę bezpieczną wątkowo. |
3 | V get(K key) Zwraca wartość skojarzoną z kluczem w tej pamięci podręcznej, najpierw ładując tę wartość, jeśli to konieczne. |
4 | ImmutableMap<K,V> getAll(Iterable<? extends K> keys) Zwraca mapę wartości skojarzonych z kluczami, tworząc lub pobierając te wartości, jeśli to konieczne. |
5 | V getUnchecked(K key) Zwraca wartość skojarzoną z kluczem w tej pamięci podręcznej, najpierw ładując tę wartość, jeśli to konieczne. |
6 | void refresh(K key) Ładuje nową wartość klucza, prawdopodobnie asynchronicznie. |
Przykład LoadingCache
Utwórz następujący program java, używając dowolnego wybranego edytora, powiedzmy C:/> Guava.
GuavaTester.java
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import com.google.common.base.MoreObjects;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
public class GuavaTester {
public static void main(String args[]) {
//create a cache for employees based on their employee id
LoadingCache<String, Employee> employeeCache =
CacheBuilder.newBuilder()
.maximumSize(100) // maximum 100 records can be cached
.expireAfterAccess(30, TimeUnit.MINUTES) // cache will expire after 30 minutes of access
.build(new CacheLoader<String, Employee>() { // build the cacheloader
@Override
public Employee load(String empId) throws Exception {
//make the expensive call
return getFromDatabase(empId);
}
});
try {
//on first invocation, cache will be populated with corresponding
//employee record
System.out.println("Invocation #1");
System.out.println(employeeCache.get("100"));
System.out.println(employeeCache.get("103"));
System.out.println(employeeCache.get("110"));
//second invocation, data will be returned from cache
System.out.println("Invocation #2");
System.out.println(employeeCache.get("100"));
System.out.println(employeeCache.get("103"));
System.out.println(employeeCache.get("110"));
} catch (ExecutionException e) {
e.printStackTrace();
}
}
private static Employee getFromDatabase(String empId) {
Employee e1 = new Employee("Mahesh", "Finance", "100");
Employee e2 = new Employee("Rohan", "IT", "103");
Employee e3 = new Employee("Sohan", "Admin", "110");
Map<String, Employee> database = new HashMap<String, Employee>();
database.put("100", e1);
database.put("103", e2);
database.put("110", e3);
System.out.println("Database hit for" + empId);
return database.get(empId);
}
}
class Employee {
String name;
String dept;
String emplD;
public Employee(String name, String dept, String empID) {
this.name = name;
this.dept = dept;
this.emplD = empID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getEmplD() {
return emplD;
}
public void setEmplD(String emplD) {
this.emplD = emplD;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(Employee.class)
.add("Name", name)
.add("Department", dept)
.add("Emp Id", emplD).toString();
}
}
Sprawdź wynik
Skompiluj klasę przy użyciu javac kompilator w następujący sposób -
C:\Guava>javac GuavaTester.java
Teraz uruchom GuavaTester, aby zobaczyć wynik.
C:\Guava>java GuavaTester
Zobacz wynik.
Invocation #1
Database hit for100
Employee{Name=Mahesh, Department=Finance, Emp Id=100}
Database hit for103
Employee{Name=Rohan, Department=IT, Emp Id=103}
Database hit for110
Employee{Name=Sohan, Department=Admin, Emp Id=110}
Invocation #2
Employee{Name=Mahesh, Department=Finance, Emp Id=100}
Employee{Name=Rohan, Department=IT, Emp Id=103}
Employee{Name=Sohan, Department=Admin, Emp Id=110}
Guava wprowadza wiele zaawansowanych narzędzi ciągów opartych na doświadczeniu programistów w tworzeniu aplikacji. Poniżej znajduje się lista przydatnych narzędzi opartych na ciągach znaków -
Sr.No | Nazwa i opis narzędzia |
---|---|
1 | Stolarz Narzędzie do łączenia obiektów, sznurków itp. |
2 | Rozdzielacz Narzędzie do dzielenia łańcucha. |
3 | CharMatcher Narzędzie do operacji na postaciach. |
4 | CaseFormat Narzędzie do zmiany formatów ciągów. |
Ponieważ prymitywne typy Javy nie mogą być używane do przekazywania w rodzajach lub w kolekcjach jako dane wejściowe, Guava dostarczyła wiele klas Wrapper Utilities do obsługi typów pierwotnych jako obiektów. Poniżej znajduje się lista przydatnych prymitywnych narzędzi przetwarzających -
Sr.No | Nazwa i opis narzędzia |
---|---|
1 | Bajty Narzędzie dla bajtu pierwotnego. |
2 | Szorty Narzędzie do krótkich prymitywnych. |
3 | Ints Narzędzie dla prymitywnych int. |
4 | Spodnie długie Użyteczność na długie lata. |
5 | Pływaki Narzędzie do prymitywnego float. |
6 | Debel Narzędzie do prymitywnego podwójnego. |
7 | Znaki Narzędzie do prymitywnego char. |
8 | Booleans Narzędzie dla prymitywnych wartości logicznych. |
Guava zapewnia klasy Utilities związane z matematyką do obsługi int, long i BigInteger. Poniżej znajduje się lista przydatnych narzędzi -
Sr.No | Nazwa i opis narzędzia |
---|---|
1 | IntMath Narzędzie matematyczne dla int. |
2 | LongMath Narzędzie matematyczne na długi czas. |
3 | BigIntegerMath Narzędzie matematyczne dla BigInteger. |