Goyave - Guide rapide

Qu'est-ce que la goyave?

Guava est une bibliothèque open source basée sur Java et contient de nombreuses bibliothèques de base de Google, qui sont utilisées dans nombre de leurs projets. Il facilite les meilleures pratiques de codage et aide à réduire les erreurs de codage. Il fournit des méthodes utilitaires pour les collections, la mise en cache, la prise en charge des primitives, la concurrence, les annotations communes, le traitement des chaînes, les E / S et les validations.

Avantages de la goyave

  • Standardized - La bibliothèque Guava est gérée par Google.

  • Efficient - C'est une extension fiable, rapide et efficace de la bibliothèque standard Java.

  • Optimized - La bibliothèque est hautement optimisée.

  • Functional Programming - Il ajoute une capacité de traitement fonctionnelle à Java.

  • Utilities - Il fournit de nombreuses classes d'utilitaires qui sont régulièrement requises dans le développement d'applications de programmation.

  • Validation - Il fournit un mécanisme de validation de sécurité standard.

  • Best Practices - Il met l'accent sur les meilleures pratiques.

Considérez l'extrait de code suivant.

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

Exécutez le programme pour obtenir le résultat suivant.

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

Voici les problèmes avec le code.

  • sum () ne prend en charge aucun des paramètres à passer comme null.

  • La fonction appelante ne craint pas non plus de passer accidentellement un null à la méthode sum ().

  • Lorsque le programme s'exécute, NullPointerException se produit.

Afin d'éviter les problèmes ci-dessus, un contrôle nul doit être effectué à chaque endroit où de tels problèmes sont présents.

Voyons l'utilisation de Optional, une classe Utility fournie par Guava, pour résoudre les problèmes ci-dessus de manière standardisée.

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

Exécutez le programme pour obtenir le résultat suivant.

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)

Comprenons les concepts importants du programme ci-dessus.

  • Optional - Une classe utilitaire, pour que le code utilise correctement la valeur null.

  • Optional.of- Il renvoie l'instance de la classe facultative à utiliser comme paramètre. Il vérifie que la valeur transmise n'est pas «nulle».

  • Optional.get - Il récupère la valeur de l'entrée stockée dans la classe Optional.

À l'aide de la classe Optional, vous pouvez vérifier si la méthode de l'appelant transmet un paramètre approprié ou non.

Configuration de l'environnement local

Si vous souhaitez toujours configurer votre environnement pour le langage de programmation Java, cette section vous explique comment télécharger et configurer Java sur votre machine. Veuillez suivre les étapes mentionnées ci-dessous pour configurer l'environnement.

Java SE est disponible gratuitement à partir du lien Télécharger Java . Vous téléchargez donc une version basée sur votre système d'exploitation.

Suivez les instructions pour télécharger Java et exécuter le .exepour installer Java sur votre machine. Une fois que vous avez installé Java sur votre machine, vous devez définir les variables d'environnement pour qu'elles pointent vers les répertoires d'installation corrects -

Configuration du chemin pour Windows 2000 / XP

Nous supposons que vous avez installé Java dans le répertoire c: \ Program Files \ java \ jdk -

  • Cliquez avec le bouton droit sur «Poste de travail» et sélectionnez «Propriétés».

  • Cliquez sur le bouton «Variables d'environnement» sous l'onglet «Avancé».

  • Maintenant, modifiez la variable «Path» afin qu'elle contienne également le chemin vers l'exécutable Java. Exemple, si le chemin est actuellement défini sur «C: \ WINDOWS \ SYSTEM32», modifiez votre chemin pour lire «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Configuration du chemin pour Windows 95/98 / ME

Nous supposons que vous avez installé Java dans le répertoire c: \ Program Files \ java \ jdk -

  • Modifiez le fichier 'C: \ autoexec.bat' et ajoutez la ligne suivante à la fin - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'

Configuration du chemin pour Linux, UNIX, Solaris, FreeBSD

La variable d'environnement PATH doit être définie pour pointer vers l'endroit où les binaires Java ont été installés. Reportez-vous à la documentation de votre shell si vous rencontrez des problèmes pour cela.

Exemple, si vous utilisez bash comme shell, vous ajouteriez la ligne suivante à la fin de votre '.bashrc: export PATH = / path / to / java: $ PATH'

Éditeurs Java populaires

Pour écrire vos programmes Java, vous avez besoin d'un éditeur de texte. Il existe de nombreux IDE sophistiqués disponibles sur le marché. Mais pour l'instant, vous pouvez envisager l'un des éléments suivants -

  • Notepad - Sur la machine Windows, vous pouvez utiliser n'importe quel éditeur de texte simple comme Notepad (recommandé pour ce tutoriel), TextPad.

  • Netbeans - Il s'agit d'un IDE Java open-source et gratuit qui peut être téléchargé depuis https://www.netbeans.org/index.html.

  • Eclipse - C'est aussi un IDE Java développé par la communauté open source eclipse et peut être téléchargé depuis https://www.eclipse.org/.

Télécharger Guava Archive

Téléchargez la dernière version du fichier jar Guava à partir de guava-18.0.jar . Au moment de la rédaction de ce didacticiel, nous avons téléchargé guava-18.0.jar et l' avons copié dans le dossier C: \> Guava.

OS Nom de l'archive
les fenêtres goyave-18.0.jar
Linux goyave-18.0.jar
Mac goyave-18.0.jar

Définir l'environnement de la goyave

Met le Guava_HOMEvariable d'environnement pour pointer vers l'emplacement du répertoire de base où le jar Guava est stocké sur votre machine. En supposant que nous avons extrait guava-18.0.jar dans le dossier Guava sur divers systèmes d'exploitation comme suit.

OS Production
les fenêtres Définissez la variable d'environnement Guava_HOME sur C: \ Guava
Linux export Guava_HOME = / usr / local / Guava
Mac export Guava_HOME = / Bibliothèque / Guava

Définir la variable CLASSPATH

Met le CLASSPATHvariable d'environnement pour pointer vers l'emplacement du pot Guava. En supposant que vous ayez stocké guava-18.0.jar dans le dossier Guava sur divers systèmes d'exploitation comme suit.

OS Production
les fenêtres Définissez la variable d'environnement CLASSPATH sur% CLASSPATH%;% Guava_HOME% \ guava-18.0.jar;.;
Linux export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.
Mac export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.

Facultatif est un objet immuable utilisé pour contenir un objet non nul. L'objet facultatif est utilisé pour représenter null avec une valeur absente. Cette classe a diverses méthodes utilitaires pour faciliter le code pour gérer les valeurs disponibles ou non disponibles au lieu de vérifier les valeurs nulles.

Déclaration de classe

Voici la déclaration pour com.google.common.base.Optional<T> classe -

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

Méthodes de classe

Sr.Non Méthode et description
1

static <T> Optional<T> absent()

Renvoie une instance facultative sans référence contenue.

2

abstract Set<T> asSet()

Renvoie un ensemble de singleton immuable dont le seul élément est l'instance contenue s'il est présent; un ensemble immuable vide autrement.

3

abstract boolean equals(Object object)

Renvoie true si object est une instance facultative et que les références contenues sont égales l'une à l'autre ou les deux sont absentes.

4

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

Si nullableReference est non nul, renvoie une instance facultative contenant cette référence; sinon renvoie absent ().

5

abstract T get()

Renvoie l'instance contenue, qui doit être présente.

6

abstract int hashCode()

Renvoie un code de hachage pour cette instance.

sept

abstract boolean isPresent()

Renvoie true si ce conteneur contient une instance (non nulle).

8

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

Renvoie une instance facultative contenant la référence non nulle donnée.

9

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

Renvoie cette option si elle a une valeur présente; secondChoice sinon.

dix

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

Renvoie l'instance contenue si elle est présente; supplier.get () sinon.

11

abstract T or(T defaultValue)

Renvoie l'instance contenue si elle est présente; defaultValue sinon.

12

abstract T orNull()

Renvoie l'instance contenue si elle est présente; nul sinon.

13

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

Renvoie la valeur de chaque instance présente à partir des options fournies, dans l'ordre, en ignorant les occurrences d'absence ().

14

abstract String toString()

Renvoie une représentation sous forme de chaîne pour cette instance.

15

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

Si l'instance est présente, elle est transformée avec la fonction donnée; sinon, absent () est renvoyé.

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe facultative

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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;
   }	
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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

Les conditions préalables fournissent des méthodes statiques pour vérifier qu'une méthode ou un constructeur est appelé avec le paramètre approprié ou non. Il vérifie les pré-conditions. Ses méthodes lancent une exception IllegalArgumentException en cas d'échec.

Déclaration de classe

Voici la déclaration pour com.google.common.base.Preconditions classe -

@GwtCompatible
public final class Preconditions
   extends Object

Méthodes de classe

Sr.Non Méthode et description
1

static void checkArgument(boolean expression)

Garantit la véracité d'une expression impliquant un ou plusieurs paramètres de la méthode appelante.

2

static void checkArgument(boolean expression, Object errorMessage)

Garantit la véracité d'une expression impliquant un ou plusieurs paramètres de la méthode appelante.

3

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

Garantit la véracité d'une expression impliquant un ou plusieurs paramètres de la méthode appelante.

4

static int checkElementIndex(int index, int size)

Garantit que l'index spécifie un élément valide dans un tableau, une liste ou une chaîne de taille.

5

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

Garantit que l'index spécifie un élément valide dans un tableau, une liste ou une chaîne de taille.

6

static <T> T checkNotNull(T reference)

Garantit qu'une référence d'objet transmise en tant que paramètre à la méthode appelante n'est pas nulle.

sept

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

Garantit qu'une référence d'objet transmise en tant que paramètre à la méthode appelante n'est pas nulle.

8

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

Garantit qu'une référence d'objet transmise en tant que paramètre à la méthode appelante n'est pas nulle.

9

static int checkPositionIndex(int index, int size)

Garantit que l'index spécifie une position valide dans un tableau, une liste ou une chaîne de taille.

dix

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

Garantit que l'index spécifie une position valide dans un tableau, une liste ou une chaîne de taille.

11

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

S'assure que le début et la fin spécifient des positions valides dans un tableau, une liste ou une chaîne de taille et sont dans l'ordre.

12

static void checkState(boolean expression)

Garantit la véracité d'une expression impliquant l'état de l'instance appelante, mais n'impliquant aucun paramètre de la méthode appelante.

13

static void checkState(boolean expression, Object errorMessage)

Garantit la véracité d'une expression impliquant l'état de l'instance appelante, mais n'impliquant aucun paramètre de la méthode appelante.

14

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

Garantit la véracité d'une expression impliquant l'état de l'instance appelante, mais n'impliquant aucun paramètre de la méthode appelante.

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe de conditions préalables

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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;
   }
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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)

La commande peut être considérée comme un comparateur enrichi avec une fonctionnalité de chaînage améliorée, plusieurs méthodes utilitaires, une capacité de tri multi-type, etc.

Déclaration de classe

Voici la déclaration pour com.google.common.collect.Ordering<T> classe -

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

Méthodes de classe

Sr.Non Méthode et description
1

static Ordering<Object> allEqual()

Renvoie un ordre qui traite toutes les valeurs comme égales, indiquant «aucun ordre». Le passage de cet ordre à n'importe quel algorithme de tri stable n'entraîne aucun changement dans l'ordre des éléments.

2

static Ordering<Object> arbitrary()

Renvoie un ordre arbitraire sur tous les objets, pour lesquels compare (a, b) == 0 implique a == b (égalité d'identité).

3

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

Recherche sortedList pour la clé à l'aide de l'algorithme de recherche binaire.

4

abstract int compare(T left, T right)

Compare ses deux arguments pour l'ordre.

5

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

Retourne un ordre qui utilise d'abord l'ordre this, mais qui en cas de "cravate", délègue ensuite à secondaryComparator.

6

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

Renvoie un ordre qui essaie chaque comparateur donné dans l'ordre jusqu'à ce qu'un résultat différent de zéro soit trouvé, renvoyant ce résultat et ne renvoyant zéro que si tous les comparateurs retournent zéro.

sept

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

Renvoie un ordre qui compare les objets selon l'ordre dans lequel ils apparaissent dans la liste donnée.

8

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

Renvoie un ordre qui compare les objets selon l'ordre dans lequel ils sont donnés à cette méthode.

9

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

Renvoie un ordre basé sur une instance de comparateur existante.

dix

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

Renvoie les k plus grands éléments de l'itérable donné selon cet ordre, du plus grand au moins.

11

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

Renvoie les k plus grands éléments de l'itérateur donné selon cet ordre, du plus grand au moins.

12

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

Renvoie une liste immuable contenant des éléments triés par cet ordre.

13

boolean isOrdered(Iterable<? extends T> iterable)

Renvoie true si chaque élément de l'itérable après le premier est supérieur ou égal à l'élément qui l'a précédé, selon cet ordre.

14

boolean isStrictlyOrdered(Iterable<? extends T> iterable)

Renvoie true si chaque élément dans itérable après le premier est strictement supérieur à l'élément qui l'a précédé, selon cet ordre

15

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

Renvoie les k moindres éléments de l'itérable donné selon cet ordre, du plus petit au plus grand.

16

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

Renvoie les k moindres éléments de l'itérateur donné selon cet ordre, du plus petit au plus grand.

17

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

Renvoie un nouvel ordre qui trie les itérables en comparant les éléments correspondants par paires jusqu'à ce qu'un résultat différent de zéro soit trouvé; impose "l'ordre du dictionnaire".

18

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

Renvoie la plus grande des deux valeurs selon cet ordre.

19

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

Renvoie la plus grande des valeurs spécifiées selon cet ordre.

20

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

Renvoie la plus grande des valeurs spécifiées selon cet ordre.

21

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

Renvoie la plus grande des valeurs spécifiées selon cet ordre.

22

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

Renvoie la plus petite des deux valeurs selon cet ordre.

23

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

Renvoie la plus petite des valeurs spécifiées selon cet ordre.

24

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

Renvoie la plus petite des valeurs spécifiées selon cet ordre.

25

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

Renvoie la plus petite des valeurs spécifiées selon cet ordre.

26

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

Renvoie un ordre sérialisable qui utilise l'ordre naturel des valeurs.

27

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

Renvoie un ordre qui traite null comme inférieur à toutes les autres valeurs et l'utilise pour comparer les valeurs non nulles.

28

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

Renvoie un ordre qui traite null comme supérieur à toutes les autres valeurs et utilise cet ordre pour comparer les valeurs non nulles.

29

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

Renvoie un nouvel ordre sur F qui ordonne les éléments en leur appliquant d'abord une fonction, puis en comparant ces résultats à l'aide de this.

30

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

Renvoie l'inverse de cet ordre; l'ordre équivalent à Collections.reverseOrder (comparateur).

31

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

Renvoie une liste modifiable contenant des éléments triés par cet ordre; utilisez ceci uniquement lorsque la liste résultante peut nécessiter des modifications supplémentaires ou peut contenir null.

32

static Ordering<Object> usingToString()

Renvoie un ordre qui compare les objets par l'ordre naturel de leurs représentations sous forme de chaîne tel que renvoyé par toString ().

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe de commande

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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);
   }
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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]

La classe Objects fournit des fonctions d'assistance applicables à tous les objets tels que equals, hashCode, etc.

Déclaration de classe

Voici la déclaration pour com.google.common.base.Objects classe -

@GwtCompatible
public final class Objects
   extends Object

Méthodes de classe

Sr.Non Méthode et description
1

static boolean equal(Object a, Object b)

Détermine si deux objets éventuellement nuls sont égaux.

2

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

Obsolète. Utilisez plutôt MoreObjects.firstNonNull (T, T). Cette méthode devrait être supprimée en juin 2016.

3

static int hashCode(Object... objects)

Génère un code de hachage pour plusieurs valeurs.

4

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

Obsolète. Utilisez plutôt MoreObjects.toStringHelper (Class). Cette méthode devrait être supprimée en juin 2016

5

static Objects.ToStringHelper toStringHelper(Object self)

Obsolète. Utilisez plutôt MoreObjects.toStringHelper (Object). Cette méthode devrait être supprimée en juin 2016.

6

static Objects.ToStringHelper toStringHelper(String className)

Obsolète. Utilisez plutôt MoreObjects.toStringHelper (String). Cette méthode devrait être supprimée en juin 2016.

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe d'objets

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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;
   }
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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

La plage représente un intervalle ou une séquence. Il est utilisé pour obtenir un ensemble de nombres / chaînes se trouvant dans une plage particulière.

Déclaration de classe

Voici la déclaration pour com.google.common.collect.Range<C> classe -

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

Méthodes

Sr.Non Méthode et description
1

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

Renvoie une plage qui contient toutes les valeurs de type C.

2

boolean apply(C input)Deprecated.

Fourni uniquement pour satisfaire l'interface du prédicat; utilisez contient (C) à la place.

3

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

Renvoie une plage qui contient toutes les valeurs supérieures ou égales au point de terminaison.

4

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

Renvoie une plage qui contient toutes les valeurs inférieures ou égales au point de terminaison.

5

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

Renvoie la forme canonique de cette plage dans le domaine donné.

6

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

Renvoie une plage qui contient toutes les valeurs supérieures ou égales à inférieur et inférieur ou égal à supérieur.

sept

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

Renvoie une plage qui contient toutes les valeurs supérieures ou égales à inférieure et strictement inférieure à supérieure.

8

boolean contains(C value)

Renvoie true si la valeur se situe dans les limites de cette plage.

9

boolean containsAll(Iterable<? extends C> values)

Renvoie true si chaque élément des valeurs est contenu dans cette plage.

dix

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

Renvoie une plage à partir du point de terminaison donné, qui peut être inclusive (fermée) ou exclusive (ouverte), sans limite supérieure.

11

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

Renvoie la plage minimale qui contient toutes les valeurs données.

12

boolean encloses(Range<C> other)

Renvoie true si les limites des autres ne s'étendent pas en dehors des limites de cette plage.

13

boolean equals(Object object)

Renvoie true si l'objet est une plage ayant les mêmes points de terminaison et les mêmes types liés que cette plage.

14

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

Renvoie une plage qui contient toutes les valeurs strictement supérieures au point de terminaison.

15

int hashCode()

Renvoie un code de hachage pour cette plage.

16

boolean hasLowerBound()

Renvoie true si cette plage a un point de terminaison inférieur.

17

boolean hasUpperBound()

Renvoie true si cette plage a un point de terminaison supérieur.

18

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

Renvoie la plage maximale comprise à la fois par cette plage et par connectedRange, si une telle plage existe.

19

boolean isConnected(Range<C> other)

Renvoie true s'il existe une plage (éventuellement vide) qui est entourée à la fois par cette plage et par d'autres.

20

boolean isEmpty()

Renvoie vrai si cette plage est de la forme [v..v) ou (v..v].

21

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

Renvoie une plage qui contient toutes les valeurs strictement inférieures au point de terminaison.

22

BoundType lowerBoundType()

Renvoie le type de la limite inférieure de cette plage: BoundType.CLOSED si la plage inclut son point de terminaison inférieur, BoundType.OPEN si ce n'est pas le cas.

23

C lowerEndpoint()

Renvoie le point de terminaison inférieur de cette plage.

24

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

Renvoie une plage qui contient toutes les valeurs strictement supérieures à inférieures et strictement inférieures à supérieures.

25

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

Renvoie une plage qui contient toutes les valeurs strictement supérieures à inférieures et inférieures ou égales à supérieures.

26

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

Renvoie une plage qui contient n'importe quelle valeur de inférieure à supérieure, où chaque point de terminaison peut être inclusif (fermé) ou exclusif (ouvert).

27

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

Renvoie une plage qui contient uniquement la valeur donnée.

28

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

Renvoie la plage minimale qui englobe à la fois cette plage et autre.

29

String toString()

Renvoie une représentation sous forme de chaîne de cette plage, telle que "[3..5)" (d'autres exemples sont répertoriés dans la documentation de la classe).

30

BoundType upperBoundType()

Renvoie le type de la limite supérieure de cette plage: BoundType.CLOSED si la plage inclut son extrémité supérieure, BoundType.OPEN si ce n'est pas le cas.

31

C upperEndpoint()

Renvoie l'extrémité supérieure de cette plage.

32

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

Renvoie une plage sans limite inférieure jusqu'au point de terminaison donné, qui peut être inclusive (fermée) ou exclusive (ouverte).

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe de plage

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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("]");
   }
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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

La classe Throwables fournit des méthodes utilitaires liées à l'interface Throwable.

Déclaration de classe

Voici la déclaration pour com.google.common.base.Throwables classe -

public final class Throwables
   extends Object

Méthodes de classe

Sr.Non Méthode et description
1

static List<Throwable> getCausalChain(Throwable throwable)

Obtient une chaîne de causes Throwable sous forme de liste.

2

static Throwable getRootCause(Throwable throwable)

Renvoie la cause la plus profonde de jetable.

3

static String getStackTraceAsString(Throwable throwable)

Renvoie une chaîne contenant le résultat de toString (), suivi de la trace de pile complète et récursive de throwable.

4

static RuntimeException propagate(Throwable throwable)

Propage jetable tel quel s'il s'agit d'une instance de RuntimeException ou Error, ou bien en dernier recours, l'encapsule dans une RuntimeException puis se propage.

5

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

Propage le jetable exactement tel quel, si et seulement s'il s'agit d'une instance de declareType.

6

static void propagateIfPossible(Throwable throwable)

Propage le jetable exactement tel quel, si et seulement s'il s'agit d'une instance de RuntimeException ou Error.

sept

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

Propage le jetable exactement tel quel, si et seulement s'il s'agit d'une instance de RuntimeException, Error ou declareType.

8

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

Propage le jetable exactement tel quel, si et seulement s'il s'agit d'une instance de RuntimeException, Error, declareType1 ou declareType2.

Méthodes héritées

Cette classe hérite des méthodes de la classe suivante -

  • java.lang.Object

Exemple de classe Throwables

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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 {
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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

Guava présente de nombreuses collections avancées basées sur l'expérience des développeurs dans les travaux de développement d'applications. Ci-dessous une liste de collections utiles -

Sr.Non Nom et description de la collection
1 Multiset

Une extension de l'interface Set pour permettre la duplication d'éléments.

2 Multimap

Une extension de l'interface de carte afin que ses clés puissent être mappées à plusieurs valeurs à la fois.

3 BiMap

Une extension de l'interface Map pour prendre en charge les opérations inverses.

4 Table

Table représente une carte spéciale dans laquelle deux clés peuvent être spécifiées de manière combinée pour faire référence à une seule valeur.

Guava fournit un mécanisme de mise en cache basé sur la mémoire très puissant par une interface LoadingCache <K, V>. Les valeurs sont automatiquement chargées dans le cache et il fournit de nombreuses méthodes utilitaires utiles pour les besoins de mise en cache.

Déclaration d'interface

Voici la déclaration pour com.google.common.cache.LoadingCache<K,V> interface -

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

Méthodes d'interface

Sr.Non Méthode et description
1

V apply(K key)

Obsolète. Fourni pour satisfaire l'interface de fonction; utilisez plutôt get (K) ou getUnchecked (K).

2

ConcurrentMap<K,V> asMap()

Renvoie une vue des entrées stockées dans ce cache sous la forme d'une carte thread-safe.

3

V get(K key)

Renvoie la valeur associée à la clé dans ce cache, en chargeant d'abord cette valeur si nécessaire.

4

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

Renvoie une carte des valeurs associées aux clés, en créant ou en récupérant ces valeurs si nécessaire.

5

V getUnchecked(K key)

Renvoie la valeur associée à la clé dans ce cache, en chargeant d'abord cette valeur si nécessaire.

6

void refresh(K key)

Charge une nouvelle valeur pour la clé, éventuellement de manière asynchrone.

Exemple de LoadingCache

Créez le programme Java suivant en utilisant n'importe quel éditeur de votre choix dans say 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();
   }	
}

Vérifiez le résultat

Compilez la classe en utilisant javac compilateur comme suit -

C:\Guava>javac GuavaTester.java

Exécutez maintenant le GuavaTester pour voir le résultat.

C:\Guava>java GuavaTester

Voyez le résultat.

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 présente de nombreux utilitaires de chaîne avancés basés sur l'expérience des développeurs dans les travaux de développement d'applications. Voici la liste des utilitaires utiles basés sur des chaînes -

Sr.Non Nom et description de l'utilitaire
1 Menuisier

Utilitaire pour joindre des objets, des chaînes, etc.

2 Splitter

Utilitaire pour diviser la chaîne.

3 CharMatcher

Utilitaire pour les opérations de caractères.

4 CaseFormat

Utilitaire pour changer les formats de chaînes.

Comme les types primitifs de Java ne peuvent pas être utilisés pour passer des génériques ou des collections en entrée, Guava a fourni de nombreuses classes Wrapper Utilities pour gérer les types primitifs en tant qu'objets. Voici la liste des utilitaires de traitement primitifs utiles -

Sr.Non Nom et description de l'utilitaire
1 Octets

Utilitaire pour l'octet primitif.

2 Short

Utilité pour le court primitif.

3 Ints

Utilitaire pour int primitif.

4 Longs

Utilité pour longtemps primitive.

5 Flotteurs

Utilitaire pour flotteur primitif.

6 Double

Utilitaire pour double primitif.

sept Caractères

Utilitaire pour le caractère primitif.

8 Booléens

Utilitaire pour booléen primitif.

Guava fournit des classes d'utilitaires liées aux mathématiques pour gérer int, long et BigInteger. Voici la liste des utilitaires utiles -

Sr.Non Nom et description de l'utilitaire
1 IntMath

Utilitaire mathématique pour int.

2 LongMath

Utilitaire mathématique pour longtemps.

3 BigIntegerMath

Utilitaire mathématique pour BigInteger.