Guava - Hızlı Kılavuz

Guava nedir?

Guava açık kaynak kodlu, Java tabanlı bir kitaplıktır ve projelerinin çoğunda kullanılan birçok temel Google kitaplığını içerir. En iyi kodlama uygulamalarını kolaylaştırır ve kodlama hatalarını azaltmaya yardımcı olur. Koleksiyonlar, önbelleğe alma, ilkel destek, eşzamanlılık, ortak ek açıklamalar, dizi işleme, G / Ç ve doğrulamalar için yardımcı yöntemler sağlar.

Guava'nın Faydaları

  • Standardized - Guava kitaplığı Google tarafından yönetilmektedir.

  • Efficient - Java standart kitaplığının güvenilir, hızlı ve verimli bir uzantısıdır.

  • Optimized - Kitaplık oldukça optimize edilmiştir.

  • Functional Programming - Java'ya işlevsel işleme yeteneği ekler.

  • Utilities - Programlama uygulaması geliştirmede düzenli olarak gerekli olan birçok yardımcı sınıf sağlar.

  • Validation - Standart bir arıza güvenlik doğrulama mekanizması sağlar.

  • Best Practices - En iyi uygulamalara vurgu yapar.

Aşağıdaki kod parçacığını düşünün.

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;
   }	
}

Aşağıdaki sonucu almak için programı çalıştırın.

Exception in thread "main" java.lang.NullPointerException
   at GuavaTester.sum(GuavaTester.java:13)
   at GuavaTester.main(GuavaTester.java:9)

Kodla ilgili sorunlar aşağıdadır.

  • sum (), boş olarak geçirilecek parametrelerin hiçbiriyle ilgilenmiyor.

  • arayan işlevi ayrıca yanlışlıkla sum () yöntemine bir boş değer iletme konusunda endişelenmez.

  • Program çalıştığında, NullPointerException oluşur.

Yukarıdaki sorunlardan kaçınmak için, bu tür sorunların olduğu her yerde boş kontrol yapılmalıdır.

Yukarıdaki sorunları standart bir şekilde çözmek için Guava tarafından sağlanan bir Utility sınıfı olan Optional'nin kullanımına bakalım.

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();
   }	
}

Aşağıdaki sonucu almak için programı çalıştırın.

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)

Yukarıdaki programın önemli kavramlarını anlayalım.

  • Optional - Kodun null değerini doğru kullanmasını sağlamak için bir yardımcı program sınıfı.

  • Optional.of- Parametre olarak kullanılacak İsteğe Bağlı sınıfın örneğini döndürür. Geçilen değeri 'boş' olmamak için kontrol eder.

  • Optional.get - İsteğe bağlı sınıfta depolanan girdinin değerini alır.

İsteğe bağlı sınıfı kullanarak, çağıran yönteminin uygun bir parametre geçirip geçirmediğini kontrol edebilirsiniz.

Yerel Ortam Kurulumu

Hala ortamınızı Java programlama dili için kurmaya istekliyseniz, bu bölüm Java'yı makinenize nasıl indirip kuracağınız konusunda size yol gösterir. Ortamı kurmak için lütfen aşağıda belirtilen adımları izleyin.

Java SE, Java İndirme bağlantısından ücretsiz olarak edinilebilir . Böylece işletim sisteminize göre bir sürüm indirirsiniz.

Java'yı indirmek için talimatları izleyin ve .exeMakinenize Java yüklemek için. Java'yı makinenize yükledikten sonra, ortam değişkenlerini doğru yükleme dizinlerini gösterecek şekilde ayarlamanız gerekir -

Windows 2000 / XP için Yolun Ayarlanması

Java'yı c: \ Program Files \ java \ jdk dizinine yüklediğinizi varsayıyoruz -

  • "Bilgisayarım" ı sağ tıklayın ve "Özellikler" i seçin.

  • "Gelişmiş" sekmesinin altındaki "Ortam değişkenleri" düğmesini tıklayın.

  • Şimdi, 'Yol' değişkenini, Java yürütülebilir dosyasının yolunu da içerecek şekilde değiştirin. Örneğin, yol şu anda 'C: \ WINDOWS \ SYSTEM32' olarak ayarlanmışsa, yolunuzu 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin' olarak değiştirin.

Windows 95/98 / ME için Yolun Ayarlanması

Java'yı c: \ Program Files \ java \ jdk dizinine yüklediğinizi varsayıyoruz -

  • 'C: \ autoexec.bat' dosyasını düzenleyin ve sonuna şu satırı ekleyin - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'

Linux, UNIX, Solaris, FreeBSD için Yolun Ayarlanması

PATH ortam değişkeni, Java ikili dosyalarının kurulu olduğu yeri gösterecek şekilde ayarlanmalıdır. Bunu yapmakta sorun yaşıyorsanız, kabuk belgelerinize bakın.

Örneğin, kabuğunuz olarak bash kullanırsanız, aşağıdaki satırı '.bashrc: export PATH = / path / to / java: $ PATH'in sonuna eklersiniz.

Popüler Java Editörleri

Java programlarınızı yazmak için bir metin düzenleyiciye ihtiyacınız var. Piyasada birçok sofistike IDE bulunmaktadır. Ancak şimdilik aşağıdakilerden birini düşünebilirsiniz -

  • Notepad - Windows makinede, Not Defteri (Bu eğitim için önerilir), TextPad gibi herhangi bir basit metin düzenleyiciyi kullanabilirsiniz.

  • Netbeans - Açık kaynak kodlu ve ücretsiz bir Java IDE'dir, buradan indirilebilir https://www.netbeans.org/index.html.

  • Eclipse - Eclipse açık kaynak topluluğu tarafından geliştirilmiş bir Java IDE'dir ve şu adresten indirilebilir: https://www.eclipse.org/.

Guava Arşivini İndir

Guava jar dosyasının en son sürümünü guava-18.0.jar'dan indirin . Bu öğreticiyi yazarken guava-18.0.jar dosyasını indirdik ve C: \> Guava klasörüne kopyaladık.

işletim sistemi Arşiv adı
pencereler guava-18.0.jar
Linux guava-18.0.jar
Mac guava-18.0.jar

Guava Ortamını Ayarla

Yı kur Guava_HOMEGuava jar'ın makinenizde depolandığı temel dizin konumunu gösteren ortam değişkeni. Varsayalım ki, guava-18.0.jar dosyasını Guava klasöründe çeşitli İşletim Sistemlerinde aşağıdaki gibi çıkardık.

işletim sistemi Çıktı
pencereler Guava_HOME ortam değişkenini C: \ Guava olarak ayarlayın
Linux Guava_HOME = / usr / local / Guava'yı dışa aktar
Mac dışa aktar Guava_HOME = / Kitaplık / Guava

CLASSPATH Değişkenini Ayarla

Yı kur CLASSPATHGuava kavanoz konumunu işaret edecek ortam değişkeni. Guava-18.0.jar dosyasını Guava klasöründe çeşitli İşletim Sistemlerinde aşağıdaki gibi sakladığınızı varsayalım.

işletim sistemi Çıktı
pencereler CLASSPATH ortam değişkenini% CLASSPATH%;% Guava_HOME% \ guava-18.0.jar;.;
Linux dışa aktar CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.
Mac dışa aktar CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.

İsteğe bağlı, boş olmayan bir nesneyi içermek için kullanılan değişmez bir nesnedir. İsteğe bağlı nesne, boş değeri olmayan değerle temsil etmek için kullanılır. Bu sınıf, kodun boş değerleri kontrol etmek yerine kullanılabilir veya mevcut olmayan değerleri işlemesini kolaylaştırmak için çeşitli yardımcı yöntemlere sahiptir.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.base.Optional<T> sınıf -

@GwtCompatible(serializable = true)
public abstract class Optional<T>
   extends Object
      implements Serializable

Sınıf Yöntemleri

Sr.No Yöntem ve Açıklama
1

static <T> Optional<T> absent()

İçeren başvuru içermeyen İsteğe Bağlı bir örnek döndürür.

2

abstract Set<T> asSet()

Varsa, tek öğesi içerilen örnek olan değişmez bir singleton Set döndürür; aksi takdirde boş bir değişmez Set.

3

abstract boolean equals(Object object)

Nesne isteğe bağlı bir örnekse ve içerdiği başvurular birbirine eşitse veya her ikisi de yoksa doğru döndürür.

4

static <T> Optional<T> fromNullable(T nullableReference)

NullableReference null değilse, bu başvuruyu içeren İsteğe Bağlı bir örnek döndürür; aksi takdirde yok () döndürür.

5

abstract T get()

Mevcut olması gereken içerilen örneği döndürür.

6

abstract int hashCode()

Bu örnek için bir karma kod döndürür.

7

abstract boolean isPresent()

Bu tutucu bir (boş olmayan) örnek içeriyorsa doğru döndürür.

8

static <T> Optional<T> of(T reference)

Verilen boş olmayan referansı içeren İsteğe bağlı bir örnek döndürür.

9

abstract Optional<T> or(Optional<? extends T> secondChoice)

Mevcut bir değeri varsa bu İsteğe Bağlı'yı döndürür; Aksi takdirde secondChoice.

10

abstract T or(Supplier<? extends T> supplier)

Varsa, içerilen örneği döndürür; aksi takdirde tedarikçi.get ().

11

abstract T or(T defaultValue)

Varsa, içerilen örneği döndürür; aksi takdirde defaultValue.

12

abstract T orNull()

Varsa, içerilen örneği döndürür; Aksi takdirde null.

13

static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals)

Yok () oluşumlarını atlayarak, sağlanan seçeneklerden mevcut her örneğin değerini sırayla döndürür.

14

abstract String toString()

Bu örnek için bir dize temsili döndürür.

15

abstract <V> Optional<V> transform(Function<? super T,V> function)

Örnek mevcutsa, verilen Fonksiyon ile dönüştürülür; aksi takdirde yok () döndürülür.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

İsteğe Bağlı Sınıf Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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;
   }	
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

First parameter is present: false
Second parameter is present: true
10

Ön koşullar, bir yöntemin veya yapıcının uygun parametrelerle çağrılıp çağrılmadığını kontrol etmek için statik yöntemler sağlar. Ön koşulları kontrol eder. Yöntemleri, başarısızlık durumunda IllegalArgumentException oluşturur.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.base.Preconditions sınıf -

@GwtCompatible
public final class Preconditions
   extends Object

Sınıf Yöntemleri

Sr.No Yöntem ve Açıklama
1

static void checkArgument(boolean expression)

Çağırma yöntemine bir veya daha fazla parametre içeren bir ifadenin doğruluğunu sağlar.

2

static void checkArgument(boolean expression, Object errorMessage)

Çağırma yöntemine bir veya daha fazla parametre içeren bir ifadenin doğruluğunu sağlar.

3

static void checkArgument(boolean expression, String errorMessageTemplate, Object. errorMessageArgs)

Çağırma yöntemine bir veya daha fazla parametre içeren bir ifadenin doğruluğunu sağlar.

4

static int checkElementIndex(int index, int size)

Dizinin bir dizi, liste veya boyut dizisinde geçerli bir öğeyi belirtmesini sağlar.

5

static int checkElementIndex(int index, int size, String desc)

Dizinin bir dizi, liste veya boyut dizesinde geçerli bir öğeyi belirtmesini sağlar.

6

static <T> T checkNotNull(T reference)

Çağıran yönteme parametre olarak iletilen bir nesne başvurusunun boş olmamasını sağlar.

7

static <T> T checkNotNull(T reference, Object errorMessage)

Çağıran yönteme parametre olarak iletilen bir nesne başvurusunun boş olmamasını sağlar.

8

static <T> T checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs)

Çağıran yönteme parametre olarak iletilen bir nesne başvurusunun boş olmamasını sağlar.

9

static int checkPositionIndex(int index, int size)

Dizinin bir dizi, liste veya boyut dizisinde geçerli bir konumu belirtmesini sağlar.

10

static int checkPositionIndex(int index, int size, String desc)

Dizinin bir dizi, liste veya boyut dizisinde geçerli bir konumu belirtmesini sağlar.

11

static void checkPositionIndexes(int start, int end, int size)

Başlangıç ​​ve bitişin bir dizi, liste veya boyut dizesinde geçerli bir konum belirtmesini ve sırayla olmasını sağlar.

12

static void checkState(boolean expression)

Çağıran örneğin durumunu içeren, ancak çağrı yöntemine herhangi bir parametre içermeyen bir ifadenin doğruluğunu sağlar.

13

static void checkState(boolean expression, Object errorMessage)

Çağıran örneğin durumunu içeren, ancak çağrı yöntemine herhangi bir parametre içermeyen bir ifadenin doğruluğunu sağlar.

14

static void checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs)

Çağıran örneğin durumunu içeren, ancak çağrı yöntemine herhangi bir parametre içermeyen bir ifadenin doğruluğunu sağlar.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

Ön Koşullar Sınıfı Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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;
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

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)

Sıralama, gelişmiş zincirleme işlevselliği, çoklu yardımcı yöntemler, çok tipli sıralama yeteneği vb. İle zenginleştirilmiş bir karşılaştırıcı olarak görülebilir.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.collect.Ordering<T> sınıf -

@GwtCompatible
public abstract class Ordering<T>
   extends Object
      implements Comparator<T>

Sınıf Yöntemleri

Sr.No Yöntem ve Açıklama
1

static Ordering<Object> allEqual()

Tüm değerleri eşit kabul eden ve "sıralama yok" şeklinde bir sıralama döndürür. Bu sıralamayı herhangi bir kararlı sıralama algoritmasına geçirmek, öğelerin sıralamasında herhangi bir değişikliğe yol açmaz.

2

static Ordering<Object> arbitrary()

Tüm nesneler üzerinde rastgele bir sıralama döndürür; bunun için (a, b) == 0, a == b (özdeşlik eşitliği) anlamına gelir.

3

int binarySearch(List<? extends T> sortedList, T key)

İkili arama algoritmasını kullanarak anahtar için sıralanmışList'i arar.

4

abstract int compare(T left, T right)

Düzen için iki argümanını karşılaştırır.

5

<U extends T> Ordering<U> compound(Comparator<? super U> secondaryComparator)

Önce bunu sıralamayı kullanan, ancak bir "bağ" durumunda ikincilComparator'a yetki veren bir sıralama döndürür.

6

static <T> Ordering<T> compound(Iterable<? extends Comparator<? super T>> comparators)

Sıfır olmayan bir sonuç bulunana kadar verilen her karşılaştırıcıyı sırayla deneyen, bu sonucu döndüren ve yalnızca tüm karşılaştırıcılar sıfır döndürürse sıfır döndüren bir sıralama döndürür.

7

static <T> Ordering<T> explicit(List<T> valuesInOrder)

Verilen listede göründükleri sıraya göre nesneleri karşılaştıran bir sıralama döndürür.

8

static <T> Ordering<T> explicit(T leastValue, T... remainingValuesInOrder)

Nesneleri bu yönteme verildikleri sıraya göre karşılaştıran bir sıralama döndürür.

9

static <T> Ordering<T> from(Comparator<T> comparator)

Mevcut bir karşılaştırıcı örneğini temel alan bir sıralama döndürür.

10

<E extends T> List<E> greatestOf(Iterable<E> iterable, int k)

Bu sıralamaya göre verilen iterable'ın en büyük k elemanlarını en büyükten en küçüğe doğru döndürür.

11

<E extends T> List<E> greatestOf(Iterator<E> iterator, int k)

Bu sıralamaya göre verilen yineleyicideki en büyük k elemanlarını en büyükten en küçüğe doğru döndürür.

12

<E extends T> ImmutableList<E> immutableSortedCopy(Iterable<E> elements)

Bu sıralamaya göre sıralanmış öğeleri içeren değişmez bir liste döndürür.

13

boolean isOrdered(Iterable<? extends T> iterable)

Bu sıralamaya göre, ilkinden sonraki yinelenebilir durumdaki her öğe kendisinden önce gelen öğeden büyükse veya ona eşitse true değerini döndürür.

14

boolean isStrictlyOrdered(Iterable<? extends T> iterable)

Bu sıralamaya göre, birinciden sonra yinelenebilir durumdaki her öğe kendisinden önceki öğeden kesinlikle daha büyükse, true değerini döndürür

15

<E extends T> List<E> leastOf(Iterable<E> iterable, int k)

Bu sıralamaya göre verilen iterable'ın en küçük elemanlarını en küçüğünden en büyüğüne doğru döndürür.

16

<E extends T> List<E> leastOf(Iterator<E> elements, int k)

Bu sıralamaya göre verilen yineleyiciden en azdan en büyüğe doğru sırayla en küçük öğeleri döndürür.

17

<S extends T> Ordering<Iterable<S>> lexicographical()

Sıfır olmayan bir sonuç bulunana kadar karşılık gelen öğeleri çiftler halinde karşılaştırarak yinelemeleri sıralayan yeni bir sıralama döndürür; "sözlük düzeni" ni empoze eder.

18

<E extends T> E max(E a, E b)

Bu sıralamaya göre iki değerden büyük olanı döndürür.

19

<E extends T> E max(E a, E b, E c, E... rest)

Bu sıralamaya göre belirtilen değerlerin en büyüğünü döndürür.

20

<E extends T> E max(Iterable<E> iterable)

Bu sıralamaya göre belirtilen değerlerin en büyüğünü döndürür.

21

<E extends T> E max(Iterator<E> iterator)

Bu sıralamaya göre belirtilen değerlerin en büyüğünü döndürür.

22

<E extends T> E min(E a, E b)

Bu sıralamaya göre iki değerden küçük olanı döndürür.

23

<E extends T> E min(E a, E b, E c, E... rest)

Bu sıralamaya göre belirtilen değerlerin en azını döndürür.

24

<E extends T> E min(Iterable<E> iterable)

Bu sıralamaya göre belirtilen değerlerin en azını döndürür.

25

<E extends T> E min(Iterator<E> iterator)

Bu sıralamaya göre belirtilen değerlerin en azını döndürür.

26

static <C extends Comparable> Ordering<C> natural()

Değerlerin doğal sırasını kullanan serileştirilebilir bir sıralama döndürür.

27

<S extends T> Ordering<S> nullsFirst()

Null değerini diğer tüm değerlerden daha az olarak değerlendiren bir sıralama döndürür ve bunu boş olmayan değerleri karşılaştırmak için kullanır.

28

<S extends T> Ordering<S> nullsLast()

Null değerini diğer tüm değerlerden daha büyük olarak değerlendiren bir sıralama döndürür ve boş olmayan değerleri karşılaştırmak için bu sıralamayı kullanır.

29

<F> Ordering<F> onResultOf(Function<F,? extends T> function)

Öğeleri önce onlara bir işlev uygulayarak, ardından bu sonuçları bunu kullanarak karşılaştırarak sıralayan F üzerinde yeni bir sıralama döndürür.

30

<S extends T> Ordering<S> reverse()

Bu sıralamanın tersini döndürür; Collections.reverseOrder (Karşılaştırıcı) ile eşdeğer Sıralama.

31

<E extends T> List<E> sortedCopy(Iterable<E> elements)

Bu sıralamaya göre sıralanmış öğeleri içeren değiştirilebilir bir liste döndürür; bunu yalnızca ortaya çıkan liste daha fazla değişiklik gerektirdiğinde veya boş değeri içerebileceğinde kullanın.

32

static Ordering<Object> usingToString()

ToString () tarafından döndürüldüğü şekliyle, nesneleri dize temsillerinin doğal sırasına göre karşılaştıran bir sıralama döndürür.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

Sipariş Sınıfı Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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);
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

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]

Nesneler sınıfı, equals, hashCode vb. Gibi tüm nesnelere uygulanabilen yardımcı işlevler sağlar.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.base.Objects sınıf -

@GwtCompatible
public final class Objects
   extends Object

Sınıf Yöntemleri

Sr.No Yöntem ve Açıklama
1

static boolean equal(Object a, Object b)

İki büyük olasılıkla boş nesnenin eşit olup olmadığını belirler.

2

static <T> T firstNonNull(T first, T second)

Kullanımdan kaldırıldı. Bunun yerine MoreObjects.firstNonNull (T, T) kullanın. Bu yöntemin Haziran 2016'da kaldırılması planlanıyor.

3

static int hashCode(Object... objects)

Birden çok değer için bir karma kod oluşturur.

4

static Objects.ToStringHelper toStringHelper(Class<?> clazz)

Kullanımdan kaldırıldı. Bunun yerine MoreObjects.toStringHelper (Class) kullanın. Bu yöntemin Haziran 2016'da kaldırılması planlanıyor

5

static Objects.ToStringHelper toStringHelper(Object self)

Kullanımdan kaldırıldı. Bunun yerine MoreObjects.toStringHelper (Object) kullanın. Bu yöntemin Haziran 2016'da kaldırılması planlanıyor.

6

static Objects.ToStringHelper toStringHelper(String className)

Kullanımdan kaldırıldı. Bunun yerine MoreObjects.toStringHelper (String) kullanın. Bu yöntemin Haziran 2016'da kaldırılması planlanıyor.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

Nesne Sınıfı Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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;
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

false
85871
Student{Name=Mahesh Parashar, Class=VI, Roll No=1}

Aralık, bir aralığı veya bir diziyi temsil eder. Belirli bir aralıkta yer alan bir dizi sayı / dizeyi elde etmek için kullanılır.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.collect.Range<C> sınıf -

@GwtCompatible
public final class Range<C extends Comparable>
   extends Object
      implements Predicate<C>, Serializable

Yöntemler

Sr.No Yöntem ve Açıklama
1

static <C extends Comparable<?>> Range<C> all()

C türünün her değerini içeren bir aralık döndürür.

2

boolean apply(C input)Deprecated.

Yalnızca Predicate arayüzünü karşılamak için sağlanmıştır; yerine içerir (C) kullanın.

3

static <C extends Comparable<?>> Range<C> atLeast(C endpoint)

Bitiş noktasına eşit veya daha büyük tüm değerleri içeren bir aralık döndürür.

4

static <C extends Comparable<?>> Range<C> atMost(C endpoint)

Uç noktadan küçük veya ona eşit tüm değerleri içeren bir aralık döndürür.

5

Range<C> canonical(DiscreteDomain<C> domain)

Verilen etki alanında bu aralığın kanonik biçimini döndürür.

6

static <C extends Comparable<?>> Range<C> closed(C lower, C upper)

Büyükten büyük veya ona eşit ve büyükten küçük veya büyüke eşit tüm değerleri içeren bir aralık döndürür.

7

static <C extends Comparable<?>> Range<C> closedOpen(C lower, C upper)

Aşağıya eşit veya daha büyük ve kesinlikle büyükten küçük tüm değerleri içeren bir aralık döndürür.

8

boolean contains(C value)

Değer bu aralığın sınırları içindeyse doğru döndürür.

9

boolean containsAll(Iterable<? extends C> values)

Değerlerdeki her öğe bu aralıkta yer alıyorsa doğru döndürür.

10

static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType)

Verilen uç noktadan, kapsayıcı (kapalı) veya dışlayıcı (açık) olabilen ve üst sınırı olmayan bir aralık döndürür.

11

static <C extends Comparable<?>> Range<C> encloseAll(Iterable<C> values)

Verilen tüm değerleri içeren minimum aralığı döndürür.

12

boolean encloses(Range<C> other)

Başkasının sınırları bu aralığın sınırlarının dışına çıkmıyorsa doğru döndürür.

13

boolean equals(Object object)

Nesne, bu aralıkla aynı uç noktalara ve bağlı türlere sahip bir aralıksa doğru döndürür.

14

static <C extends Comparable<?>> Range<C> greaterThan(C endpoint)

Son noktadan kesin olarak büyük olan tüm değerleri içeren bir aralık döndürür.

15

int hashCode()

Bu aralık için bir karma kod döndürür.

16

boolean hasLowerBound()

Bu aralığın daha düşük bir uç noktası varsa doğru döndürür.

17

boolean hasUpperBound()

Bu aralığın bir üst uç noktası varsa doğru döndürür.

18

Range<C> intersection(Range<C> connectedRange)

Böyle bir aralık varsa, hem bu aralık hem de linkedRange tarafından kapsanan maksimum aralığı döndürür.

19

boolean isConnected(Range<C> other)

Hem bu aralık hem de diğerleri tarafından kapsanan (muhtemelen boş) bir aralık varsa doğru döndürür.

20

boolean isEmpty()

Bu aralık [v..v) veya (v..v] biçimindeyse doğru döndürür.

21

static <C extends Comparable<?>> Range<C> lessThan(C endpoint)

Son noktadan kesin olarak daha küçük tüm değerleri içeren bir aralık döndürür.

22

BoundType lowerBoundType()

Bu aralığın alt sınırının türünü döndürür: Aralık, alt uç noktasını içeriyorsa BoundType.CLOSED, yoksa BoundType.OPEN.

23

C lowerEndpoint()

Bu aralığın alt uç noktasını döndürür.

24

static <C extends Comparable<?>> Range<C> open(C lower, C upper)

Aşağıdakilerden kesinlikle büyük ve kesinlikle büyükten küçük tüm değerleri içeren bir aralık döndürür.

25

static <C extends Comparable<?>> Range<C> openClosed(C lower, C upper)

Büyükten kesin olarak büyük ve büyükten küçük veya yukarı eşit tüm değerleri içeren bir aralık döndürür.

26

static <C extends Comparable<?>> Range<C> range(C lower, BoundType lowerType, C upper, BoundType upperType)

Aşağıdan yukarıya, her uç noktanın kapsayıcı (kapalı) veya dışlayıcı (açık) olabileceği herhangi bir değeri içeren bir aralık döndürür.

27

static <C extends Comparable<?>> Range<C> singleton(C value)

Yalnızca verilen değeri içeren bir aralık döndürür.

28

Range<C> span(Range<C> other)

Hem bu aralığı hem de diğerini kapsayan minimum aralığı döndürür.

29

String toString()

Bu aralığın "[3..5)" gibi bir dize gösterimini döndürür (diğer örnekler sınıf belgelerinde listelenmiştir).

30

BoundType upperBoundType()

Bu aralığın üst sınırının türünü döndürür: Aralık, üst uç noktasını içeriyorsa BoundType.CLOSED, yoksa BoundType.OPEN.

31

C upperEndpoint()

Bu aralığın üst uç noktasını döndürür.

32

static <C extends Comparable<?>> Range<C> upTo(C endpoint, BoundType boundType)

Kapsayıcı (kapalı) veya dışlayıcı (açık) olabilen, verilen uç noktaya kadar alt sınırı olmayan bir aralık döndürür.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

Aralık Sınıfı Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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("]");
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

[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 ]

Throwables sınıfı, Throwable arabirimiyle ilgili yardımcı program yöntemleri sağlar.

Sınıf Beyanı

Aşağıdaki beyanı com.google.common.base.Throwables sınıf -

public final class Throwables
   extends Object

Sınıf Yöntemleri

Sr.No Yöntem ve Açıklama
1

static List<Throwable> getCausalChain(Throwable throwable)

Bir Atılabilir neden zincirini liste olarak alır.

2

static Throwable getRootCause(Throwable throwable)

Fırlatılabilirliğin en içteki nedenini döndürür.

3

static String getStackTraceAsString(Throwable throwable)

ToString () sonucunu ve ardından atılabilir tam, özyinelemeli yığın izini içeren bir dize döndürür.

4

static RuntimeException propagate(Throwable throwable)

Bir RuntimeException veya Error örneğiyse veya son çare olarak atılabilirliği olduğu gibi yayar, bunu bir RuntimeException içinde sarar ve sonra yayılır.

5

static <X extends Throwable> void propagateIfInstanceOf(Throwable throwable, Class<X> declaredType)

Atılabilirliği tam olarak olduğu gibi yayar, ancak ve ancak bu, declaredType'ın bir örneğiyse.

6

static void propagateIfPossible(Throwable throwable)

Yalnızca ve yalnızca RuntimeException veya Error örneğiyse atılabilirliği tam olarak olduğu gibi yayar.

7

static <X extends Throwable> void propagateIfPossible(Throwable throwable, Class<X> declaredType)

Yalnızca ve yalnızca RuntimeException, Error veya declaredType örneğiyse atılabilirliği tam olarak olduğu gibi yayar.

8

static <X1 extends Throwable,X2 extends Throwable>void propagateIfPossible(Throwable throwable, Class<X1> declaredType1, Class<X2> declaredType2)

Yalnızca ve yalnızca bir RuntimeException, Error, declaredType1 veya declaredType2 örneğiyse atılabilirliği tam olarak olduğu gibi yayar.

Miras Alınan Yöntemler

Bu sınıf, aşağıdaki sınıftan yöntemleri miras alır -

  • java.lang.Object

Throwables Sınıfı Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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 {
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

InvalidInputException
java.lang.ArrayIndexOutOfBoundsException: 4
   at GuavaTester.getValue(GuavaTester.java:52)
   at GuavaTester.showcaseThrowables1(GuavaTester.java:38)
   at GuavaTester.main(GuavaTester.java:19)

Guava, geliştiricilerin uygulama geliştirme çalışmalarındaki deneyimlerine dayalı birçok gelişmiş koleksiyon sunar. Aşağıda, faydalı koleksiyonların bir listesi verilmiştir -

Sr.No Koleksiyon adı ve Açıklama
1 Çoklu set

Yinelenen öğelere izin vermek için Set arabirimi uzantısı.

2 Çoklu harita

Anahtarlarının bir seferde birden çok değere eşlenebilmesi için Harita arabiriminin bir uzantısı.

3 BiMap

Ters işlemleri desteklemek için Harita arayüzüne bir uzantı.

4 Tablo

Tablo, tek bir değere atıfta bulunmak için iki anahtarın birleşik şekilde belirtilebildiği özel bir haritayı temsil eder.

Guava, LoadingCache <K, V> arayüzü ile çok güçlü bir bellek tabanlı önbellekleme mekanizması sağlar. Değerler otomatik olarak önbelleğe yüklenir ve önbelleğe alma ihtiyaçları için yararlı birçok yardımcı yöntem sağlar.

Arayüz Beyanı

Aşağıdaki beyanı com.google.common.cache.LoadingCache<K,V> arayüz -

@Beta
@GwtCompatible
public interface LoadingCache<K,V>
   extends Cache<K,V>, Function<K,V>

Arayüz Yöntemleri

Sr.No Yöntem ve Açıklama
1

V apply(K key)

Kullanımdan kaldırıldı. Fonksiyon arayüzünü sağlamak için sağlanmıştır; bunun yerine get (K) veya getUnchecked (K) kullanın.

2

ConcurrentMap<K,V> asMap()

Bu önbellekte depolanan girdilerin görünümünü iş parçacığı açısından güvenli bir harita olarak döndürür.

3

V get(K key)

Bu önbellekteki anahtarla ilişkili değeri döndürür, önce gerekirse bu değeri yükler.

4

ImmutableMap<K,V> getAll(Iterable<? extends K> keys)

Anahtarlarla ilişkili değerlerin bir haritasını döndürür, gerekirse bu değerleri oluşturur veya alır.

5

V getUnchecked(K key)

Bu önbellekteki anahtarla ilişkili değeri döndürür, önce gerekirse bu değeri yükler.

6

void refresh(K key)

Anahtar için muhtemelen eşzamansız olarak yeni bir değer yükler.

LoadingCache Örneği

Seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki java programını oluşturun 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();
   }	
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\Guava>javac GuavaTester.java

Şimdi sonucu görmek için GuavaTester'ı çalıştırın.

C:\Guava>java GuavaTester

Sonucu görün.

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, geliştiricilerin uygulama geliştirme çalışmalarındaki deneyimlerine dayanan birçok gelişmiş dizi yardımcı programı sunar. Kullanışlı dize tabanlı yardımcı programların listesi aşağıdadır -

Sr.No Yardımcı program adı ve açıklaması
1 Marangoz

Nesneleri, dizeleri vb.

2 Ayırıcı

Dizeyi bölmek için yardımcı program.

3 CharMatcher

Karakter işlemleri için yardımcı program.

4 CaseFormat

Dize biçimlerini değiştirmek için yardımcı program.

İlkel Java türleri, jeneriklerde veya koleksiyonlarda girdi olarak geçmek için kullanılamadığından, Guava ilkel türleri Nesneler olarak işlemek için çok sayıda Wrapper Utilities sınıfı sağladı. Yararlı ilkel işleme araçlarının listesi aşağıdadır -

Sr.No Yardımcı program adı ve açıklaması
1 Bayt

İlkel bayt için yardımcı program.

2 Şort

İlkel kısa için yardımcı program.

3 Ints

İlkel int için yardımcı program.

4 Uzun

İlkel uzun için yardımcı program.

5 Yüzer

İlkel kayan nokta için yardımcı program.

6 Çiftler

İlkel çift için yardımcı program.

7 Karakterler

İlkel karakter için yardımcı program.

8 Boole'lar

İlkel boole için yardımcı program.

Guava, int, long ve BigInteger'ı işlemek için Matematik ile ilgili Hizmet sınıfları sağlar. Yararlı yardımcı programların listesi aşağıdadır -

Sr.No Yardımcı program adı ve açıklaması
1 IntMath

İnt için matematik yardımcı programı.

2 LongMath

Uzun süre matematik yardımcı programı.

3 BigIntegerMath

BigInteger için matematik yardımcı programı.