Учебники

Гуава — Краткое руководство

Гуава — Обзор

Guava — это библиотека с открытым исходным кодом, основанная на Java и содержащая множество основных библиотек Google, которые используются во многих их проектах. Это облегчает лучшие практики кодирования и помогает уменьшить ошибки кодирования. Он предоставляет служебные методы для коллекций, кэширования, поддержки примитивов, параллелизма, общих аннотаций, обработки строк, ввода-вывода и проверок.

Преимущества гуавы

  • Стандартизировано — библиотека Guava управляется Google.

  • Эффективный — это надежное, быстрое и эффективное расширение стандартной библиотеки Java.

  • Оптимизировано — библиотека высоко оптимизирована.

  • Функциональное программирование — добавляет функциональные возможности обработки в Java.

  • Утилиты — предоставляет множество классов утилит, которые регулярно требуются при разработке программных приложений.

  • Проверка. Предоставляет стандартный отказоустойчивый механизм проверки.

  • Лучшие практики — Делается акцент на лучших практиках.

Стандартизировано — библиотека Guava управляется Google.

Эффективный — это надежное, быстрое и эффективное расширение стандартной библиотеки Java.

Оптимизировано — библиотека высоко оптимизирована.

Функциональное программирование — добавляет функциональные возможности обработки в Java.

Утилиты — предоставляет множество классов утилит, которые регулярно требуются при разработке программных приложений.

Проверка. Предоставляет стандартный отказоустойчивый механизм проверки.

Лучшие практики — Делается акцент на лучших практиках.

Рассмотрим следующий фрагмент кода.

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

Запустите программу, чтобы получить следующий результат.

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

Ниже приведены проблемы с кодом.

  • sum () не заботится о каких-либо параметрах, которые должны быть переданы как нулевые.

  • Вызывающая функция также не беспокоится о случайной передаче нулевого метода sum ().

  • Когда программа запускается, возникает исключение NullPointerException.

sum () не заботится о каких-либо параметрах, которые должны быть переданы как нулевые.

Вызывающая функция также не беспокоится о случайной передаче нулевого метода sum ().

Когда программа запускается, возникает исключение NullPointerException.

Чтобы избежать вышеупомянутых проблем, нулевая проверка должна быть сделана в каждом месте, где такие проблемы присутствуют.

Давайте рассмотрим использование Optional, класса утилит, предоставляемого Guava, для стандартного решения вышеуказанных проблем.

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

Запустите программу, чтобы получить следующий результат.

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)

Давайте разберемся с важными концепциями вышеуказанной программы.

  • Необязательно — служебный класс, чтобы код правильно использовал нуль.

  • Optional.of — возвращает экземпляр класса Optional, который будет использоваться в качестве параметра. Он проверяет переданное значение, чтобы не быть «нулевым».

  • Optional.get — получает значение ввода, хранящегося в классе Optional.

Необязательно — служебный класс, чтобы код правильно использовал нуль.

Optional.of — возвращает экземпляр класса Optional, который будет использоваться в качестве параметра. Он проверяет переданное значение, чтобы не быть «нулевым».

Optional.get — получает значение ввода, хранящегося в классе Optional.

Используя класс Optional, вы можете проверить, передает ли метод вызывающей стороны правильный параметр или нет.

Гуава — Настройка среды

Настройка локальной среды

Если вы все еще хотите настроить свою среду для языка программирования Java, то в этом разделе вы узнаете, как загрузить и настроить Java на вашем компьютере. Пожалуйста, следуйте инструкциям ниже, чтобы настроить среду.

Java SE находится в свободном доступе по ссылке Скачать Java . Таким образом, вы загружаете версию, основанную на вашей операционной системе.

Следуйте инструкциям для загрузки Java и запуска .exe для установки Java на вашем компьютере. После того, как вы установили Java на свой компьютер, вам нужно будет установить переменные окружения, чтобы они указывали на правильные каталоги установки —

Настройка пути для Windows 2000 / XP

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk

  • Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».

  • Нажмите кнопку «Переменные среды» на вкладке «Дополнительно».

  • Теперь измените переменную Path, чтобы она также содержала путь к исполняемому файлу Java. Например, если в настоящий момент путь задан как «C: \ WINDOWS \ SYSTEM32», измените ваш путь на «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».

Нажмите кнопку «Переменные среды» на вкладке «Дополнительно».

Теперь измените переменную Path, чтобы она также содержала путь к исполняемому файлу Java. Например, если в настоящий момент путь задан как «C: \ WINDOWS \ SYSTEM32», измените ваш путь на «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Настройка пути для Windows 95/98 / ME

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk

  • Отредактируйте файл «C: \ autoexec.bat» и добавьте в конце следующую строку: «SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin»

Отредактируйте файл «C: \ autoexec.bat» и добавьте в конце следующую строку: «SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin»

Настройка пути для Linux, UNIX, Solaris, FreeBSD

Переменная среды PATH должна указывать на то, где установлены двоичные файлы Java. Обратитесь к документации по вашей оболочке, если у вас возникли проблемы с этим.

Например, если вы используете bash в качестве оболочки, вы добавили бы следующую строку в конец вашего .bashrc: export PATH = / path / to / java: $ PATH ‘

Популярные редакторы Java

Для написания ваших программ на Java вам нужен текстовый редактор. Есть много сложных IDE, доступных на рынке. Но сейчас вы можете рассмотреть один из следующих —

  • Блокнот — на компьютере с Windows вы можете использовать любой простой текстовый редактор, например Блокнот (рекомендуется для этого урока), TextPad.

  • Netbeans — это Java IDE с открытым исходным кодом, который можно загрузить по адресу https://www.netbeans.org/index.html .

  • Eclipse — это также Java IDE, разработанная сообществом открытого исходного кода eclipse, которую можно скачать по адресу https://www.eclipse.org/ .

Блокнот — на компьютере с Windows вы можете использовать любой простой текстовый редактор, например Блокнот (рекомендуется для этого урока), TextPad.

Netbeans — это Java IDE с открытым исходным кодом, который можно загрузить по адресу https://www.netbeans.org/index.html .

Eclipse — это также Java IDE, разработанная сообществом открытого исходного кода eclipse, которую можно скачать по адресу https://www.eclipse.org/ .

Скачать архив гуавы

Загрузите последнюю версию файла java для Guava с guava-18.0.jar . На момент написания этого руководства мы загрузили guava-18.0.jar и скопировали его в папку C: \> Guava.

Операционные системы Название архива
Windows гуавы-18.0.jar
Linux гуавы-18.0.jar
макинтош гуавы-18.0.jar

Установить среду гуавы

Установите переменную окружения Guava_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится java-архив . Предполагая, что мы извлекли guava-18.0.jar в папку Guava для различных операционных систем следующим образом.

Операционные системы Выход
Windows Установите переменную окружения Guava_HOME в C: \ Guava
Linux export Guava_HOME = / usr / local / Guava
макинтош export Guava_HOME = / Библиотека / Гуава

Установить переменную CLASSPATH

Установите переменную среды CLASSPATH, чтобы она указывала на расположение фляги в Гуаве. Предполагается, что вы сохранили guava-18.0.jar в папке Guava в различных операционных системах следующим образом.

Операционные системы Выход
Windows Установите переменную среды CLASSPATH в% CLASSPATH%;% Guava_HOME% \ guava-18.0.jar;.;
Linux export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.
макинтош export CLASSPATH = $ CLASSPATH: $ Guava_HOME / guava-18.0.jar :.

Гуава — необязательный класс

Необязательный — неизменный объект, используемый для хранения ненулевого объекта. Необязательный объект используется для представления нулевого значения с отсутствующим значением. Этот класс имеет различные служебные методы, облегчающие коду обработку значений как доступных или недоступных вместо проверки нулевых значений.

Декларация класса

Ниже приводится объявление для класса com.google.common.base.Optional <T>.

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

Методы класса

Sr.No Метод и описание
1

static <T> Необязательный <T> отсутствует ()

Возвращает необязательный экземпляр без вложенной ссылки.

2

абстрактный Set <T> asSet ()

Возвращает неизменный одноэлементный набор, единственным элементом которого является содержащийся экземпляр, если он присутствует; пустой неизменяемый Установите иначе.

3

абстрактный логический равно (объектный объект)

Возвращает true, если объект является необязательным экземпляром, и либо содержащиеся в нем ссылки равны друг другу, либо оба отсутствуют.

4

static <T> Необязательный <T> fromNullable (T nullableReference)

Если nullableReference не равно NULL, возвращает необязательный экземпляр, содержащий эту ссылку; в противном случае возвращает отсутствующий ().

5

абстрактный T get ()

Возвращает содержащийся экземпляр, который должен присутствовать.

6

abstract int hashCode ()

Возвращает хеш-код для этого экземпляра.

7

абстрактный логический isPresent ()

Возвращает true, если этот держатель содержит (ненулевой) экземпляр.

8

static <T> Необязательный <T> of (ссылка T)

Возвращает необязательный экземпляр, содержащий данную ненулевую ссылку.

9

абстрактный Необязательный <T> или (Необязательный <? extends T> secondChoice)

Возвращает этот Необязательный, если он имеет значение присутствует; secondChoice в противном случае.

10

абстрактный T или (Поставщик <? расширяет T> поставщик)

Возвращает содержащийся экземпляр, если он присутствует; supplier.get () в противном случае.

11

абстрактный T или (T defaultValue)

Возвращает содержащийся экземпляр, если он присутствует; defaultValue в противном случае.

12

абстрактный T orNull ()

Возвращает содержащийся экземпляр, если он присутствует; в противном случае

13

static <T> Iterable <T> presentInstances (Iterable <? extends Необязательный <? extends T >> необязательный)

Возвращает значение каждого существующего экземпляра из предоставленных опций по порядку, пропуская вхождения absent ().

14

абстрактная строка toString ()

Возвращает строковое представление для этого экземпляра.

15

абстрактное <V> необязательное преобразование <V> (функция <? super T, V>)

Если экземпляр присутствует, он преобразуется с помощью данной функции; в противном случае, отсутствует ().

static <T> Необязательный <T> отсутствует ()

Возвращает необязательный экземпляр без вложенной ссылки.

абстрактный Set <T> asSet ()

Возвращает неизменный одноэлементный набор, единственным элементом которого является содержащийся экземпляр, если он присутствует; пустой неизменяемый Установите иначе.

абстрактный логический равно (объектный объект)

Возвращает true, если объект является необязательным экземпляром, и либо содержащиеся в нем ссылки равны друг другу, либо оба отсутствуют.

static <T> Необязательный <T> fromNullable (T nullableReference)

Если nullableReference не равно NULL, возвращает необязательный экземпляр, содержащий эту ссылку; в противном случае возвращает отсутствующий ().

абстрактный T get ()

Возвращает содержащийся экземпляр, который должен присутствовать.

abstract int hashCode ()

Возвращает хеш-код для этого экземпляра.

абстрактный логический isPresent ()

Возвращает true, если этот держатель содержит (ненулевой) экземпляр.

static <T> Необязательный <T> of (ссылка T)

Возвращает необязательный экземпляр, содержащий данную ненулевую ссылку.

абстрактный Необязательный <T> или (Необязательный <? extends T> secondChoice)

Возвращает этот Необязательный, если он имеет значение присутствует; secondChoice в противном случае.

абстрактный T или (Поставщик <? расширяет T> поставщик)

Возвращает содержащийся экземпляр, если он присутствует; supplier.get () в противном случае.

абстрактный T или (T defaultValue)

Возвращает содержащийся экземпляр, если он присутствует; defaultValue в противном случае.

абстрактный T orNull ()

Возвращает содержащийся экземпляр, если он присутствует; в противном случае

static <T> Iterable <T> presentInstances (Iterable <? extends Необязательный <? extends T >> необязательный)

Возвращает значение каждого существующего экземпляра из предоставленных опций по порядку, пропуская вхождения absent ().

абстрактная строка toString ()

Возвращает строковое представление для этого экземпляра.

абстрактное <V> необязательное преобразование <V> (функция <? super T, V>)

Если экземпляр присутствует, он преобразуется с помощью данной функции; в противном случае, отсутствует ().

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример необязательного класса

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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;
   }	
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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

Гуава — класс предварительных условий

Предварительные условия предоставляют статические методы для проверки того, что метод или конструктор вызывается с правильным параметром или нет. Он проверяет предварительные условия. Его методы выдают IllegalArgumentException при сбое.

Декларация класса

Ниже приводится объявление для класса com.google.common.base.Preconditions.

@GwtCompatible
public final class Preconditions
   extends Object

Методы класса

Sr.No Метод и описание
1

static void checkArgument (логическое выражение)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

2

static void checkArgument (логическое выражение, объект errorMessage)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

3

static void checkArgument (логическое выражение, String errorMessageTemplate, Object. errorMessageArgs)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

4

static int checkElementIndex (индекс int, размер int)

Гарантирует, что индекс указывает допустимый элемент в массиве, списке или строке размера.

5

static int checkElementIndex (индекс int, размер int, строка String)

Гарантирует, что индекс указывает допустимый элемент в массиве, списке или строке размера.

6

static <T> T checkNotNull (ссылка T)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

7

static <T> T checkNotNull (ссылка T, объект errorMessage)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

8

static <T> T checkNotNull (ссылка T, строка errorMessageTemplate, Object … errorMessageArgs)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

9

static int checkPositionIndex (int index, int size)

Гарантирует, что индекс указывает допустимую позицию в массиве, списке или строке размера.

10

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

Гарантирует, что индекс указывает допустимую позицию в массиве, списке или строке размера.

11

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

Гарантирует, что начало и конец задают правильные позиции в массиве, списке или строке размера и располагаются по порядку.

12

static void checkState (логическое выражение)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

13

static void checkState (логическое выражение, объект errorMessage)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

14

static void checkState (логическое выражение, String errorMessageTemplate, Object … errorMessageArgs)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

static void checkArgument (логическое выражение)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

static void checkArgument (логическое выражение, объект errorMessage)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

static void checkArgument (логическое выражение, String errorMessageTemplate, Object. errorMessageArgs)

Обеспечивает истинность выражения, включающего один или несколько параметров, вызывающему методу.

static int checkElementIndex (индекс int, размер int)

Гарантирует, что индекс указывает допустимый элемент в массиве, списке или строке размера.

static int checkElementIndex (индекс int, размер int, строка String)

Гарантирует, что индекс указывает допустимый элемент в массиве, списке или строке размера.

static <T> T checkNotNull (ссылка T)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

static <T> T checkNotNull (ссылка T, объект errorMessage)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

static <T> T checkNotNull (ссылка T, строка errorMessageTemplate, Object … errorMessageArgs)

Гарантирует, что ссылка на объект, переданная в качестве параметра вызывающему методу, не равна нулю.

static int checkPositionIndex (int index, int size)

Гарантирует, что индекс указывает допустимую позицию в массиве, списке или строке размера.

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

Гарантирует, что индекс указывает допустимую позицию в массиве, списке или строке размера.

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

Гарантирует, что начало и конец задают правильные позиции в массиве, списке или строке размера и располагаются по порядку.

static void checkState (логическое выражение)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

static void checkState (логическое выражение, объект errorMessage)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

static void checkState (логическое выражение, String errorMessageTemplate, Object … errorMessageArgs)

Гарантирует истинность выражения, включающего состояние вызывающего экземпляра, но не затрагивающего параметры вызывающего метода.

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса предварительных условий

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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;
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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)

Гуава — Класс заказа

Упорядочение можно рассматривать как расширенный компаратор с расширенными функциональными возможностями цепочки, множеством служебных методов, возможностью сортировки по нескольким типам и т. Д.

Декларация класса

Ниже приводится объявление для класса com.google.common.collect.Ordering <T>.

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

Методы класса

Sr.No Метод и описание
1

статическое упорядочение <Object> allEqual ()

Возвращает порядок, который обрабатывает все значения как равные, указывая «нет порядка». Передача этого порядка любому устойчивому алгоритму сортировки не приводит к изменению порядка элементов.

2

статический порядок <объект> произвольный ()

Возвращает произвольный порядок для всех объектов, для которого сравнение (a, b) == 0 подразумевает a == b (равенство тождеств).

3

int binarySearch (список <? extends T> sortedList, ключ T)

Ищет в sortedList ключ, используя алгоритм двоичного поиска.

4

абстрактный int сравнить (T слева, T справа)

Сравнивает два аргумента для порядка.

5

<U extends T> Упорядочивание <U> соединения (Comparator <? Super U> secondComparator)

Возвращает упорядочение, которое сначала использует упорядочение this, но которое в случае «связывания» затем делегируется в secondComparator.

6

статическое <T> упорядочение <T> соединения (итерируемые <? extends Comparator <? super T >> компараторы)

Возвращает порядок, при котором каждый данный компаратор пытается по порядку, пока не будет найден ненулевой результат, возвращает этот результат и возвращает ноль только в том случае, если все компараторы возвращают ноль.

7

статическое <T> упорядочение <T> явное (List <T> valuesInOrder)

Возвращает порядок, в котором сравниваются объекты в соответствии с порядком их появления в заданном списке.

8

статическое <T> упорядочение <T> явное (TimumValue, T … ОстатокValuesInOrder)

Возвращает порядок, который сравнивает объекты в соответствии с порядком, в котором они переданы этому методу.

9

статический <T> порядок <T> из (компаратор <T> компаратор)

Возвращает порядок на основе существующего экземпляра компаратора.

10

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

Возвращает k наибольших элементов заданной итерации в соответствии с этим порядком, в порядке от наибольшего к наименьшему.

11

<E extends T> Список <E> greatOf (Итератор <E>, итератор, int k)

Возвращает k наибольших элементов из данного итератора в соответствии с этим порядком, от наибольшего к наименьшему.

12

<E extends T> ImmutableList <E> immutableSortedCopy (итерируемые элементы <E>)

Возвращает неизменный список, содержащий элементы, отсортированные по этому порядку.

13

логический isOrdered (Iterable <? extends T> итерируемый)

Возвращает true, если каждый элемент в итерируемом после первого больше или равен элементу, который предшествовал ему, в соответствии с этим порядком.

14

boolean isStrictlyOrdered (Iterable <? extends T> iterable)

Возвращает true, если каждый элемент в итерируемом после первого строго больше, чем элемент, предшествующий ему, согласно этому порядку

15

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

Возвращает k наименьших элементов заданной итерации в соответствии с этим порядком, от наименьшего к наибольшему.

16

<E extends T> List <E> lessOf (элементы Iterator <E>, int k)

Возвращает k наименьших элементов из данного итератора в соответствии с этим порядком, от наименьшего к наибольшему.

17

<S extends T> Порядок <Iterable <S >> лексикографический ()

Возвращает новый порядок, который сортирует итерации, сравнивая соответствующие элементы попарно, пока не будет найден ненулевой результат; навязывает «словарный порядок».

18

<E расширяет T> E max (E a, E b)

Возвращает большее из двух значений в соответствии с этим порядком.

19

<E расширяет T> E max (E a, E b, E c, E … покой)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

20

<E расширяет T> E max (итерируемый <E> итерируемый)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

21

<E расширяет T> E max (итератор <E>)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

22

<E удлиняет T> E min (E a, E b)

Возвращает меньшее из двух значений в соответствии с этим порядком.

23

<E расширяет T> E min (E a, E b, E c, E … покой)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

24

<E расширяет T> E мин (итерируемый <E> итерируемый)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

25

<E расширяет T> E мин (итератор <E>)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

26

static <C extends Comparable> Упорядочивание <C> natural ()

Возвращает сериализуемый порядок, который использует естественный порядок значений.

27

<S extends T> Упорядочивание <S> nullsFirst ()

Возвращает порядок, который обрабатывает нулевое значение как меньшее, чем все другие значения, и использует его для сравнения ненулевых значений.

28

<S extends T> Упорядочивание <S> nullsLast ()

Возвращает порядок, который обрабатывает нуль как большее, чем все другие значения, и использует этот порядок для сравнения ненулевых значений.

29

<F> Упорядочивание <F> onResultOf (функция <F ,? extends T>)

Возвращает новый порядок на F, который упорядочивает элементы, сначала применяя к ним функцию, а затем сравнивая эти результаты, используя это.

30

<S extends T> Упорядочивание <S> reverse ()

Возвращает реверс этого порядка; Порядок, эквивалентный Collections.reverseOrder (Comparator).

31

<E extends T> List <E> sortedCopy (итерируемые элементы <E>)

Возвращает изменяемый список, содержащий элементы, отсортированные по этому порядку; используйте это только тогда, когда результирующий список может нуждаться в дальнейшей модификации или может содержать ноль.

32

статическое упорядочение <Object> usingToString ()

Возвращает упорядочение, которое сравнивает объекты по естественному упорядочению их строковых представлений, как возвращено toString ().

статическое упорядочение <Object> allEqual ()

Возвращает порядок, который обрабатывает все значения как равные, указывая «нет порядка». Передача этого порядка любому устойчивому алгоритму сортировки не приводит к изменению порядка элементов.

статический порядок <объект> произвольный ()

Возвращает произвольный порядок для всех объектов, для которого сравнение (a, b) == 0 подразумевает a == b (равенство тождеств).

int binarySearch (список <? extends T> sortedList, ключ T)

Ищет в sortedList ключ, используя алгоритм двоичного поиска.

абстрактный int сравнить (T слева, T справа)

Сравнивает два аргумента для порядка.

<U extends T> Упорядочивание <U> соединения (Comparator <? Super U> secondComparator)

Возвращает упорядочение, которое сначала использует упорядочение this, но которое в случае «связывания» затем делегируется в secondComparator.

статическое <T> упорядочение <T> соединения (итерируемые <? extends Comparator <? super T >> компараторы)

Возвращает порядок, при котором каждый данный компаратор пытается по порядку, пока не будет найден ненулевой результат, возвращает этот результат и возвращает ноль только в том случае, если все компараторы возвращают ноль.

статическое <T> упорядочение <T> явное (List <T> valuesInOrder)

Возвращает порядок, в котором сравниваются объекты в соответствии с порядком их появления в заданном списке.

статическое <T> упорядочение <T> явное (TimumValue, T … ОстатокValuesInOrder)

Возвращает порядок, который сравнивает объекты в соответствии с порядком, в котором они переданы этому методу.

статический <T> порядок <T> из (компаратор <T> компаратор)

Возвращает порядок на основе существующего экземпляра компаратора.

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

Возвращает k наибольших элементов заданной итерации в соответствии с этим порядком, в порядке от наибольшего к наименьшему.

<E extends T> Список <E> greatOf (Итератор <E>, итератор, int k)

Возвращает k наибольших элементов из данного итератора в соответствии с этим порядком, от наибольшего к наименьшему.

<E extends T> ImmutableList <E> immutableSortedCopy (итерируемые элементы <E>)

Возвращает неизменный список, содержащий элементы, отсортированные по этому порядку.

логический isOrdered (Iterable <? extends T> итерируемый)

Возвращает true, если каждый элемент в итерируемом после первого больше или равен элементу, который предшествовал ему, в соответствии с этим порядком.

boolean isStrictlyOrdered (Iterable <? extends T> iterable)

Возвращает true, если каждый элемент в итерируемом после первого строго больше, чем элемент, предшествующий ему, согласно этому порядку

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

Возвращает k наименьших элементов заданной итерации в соответствии с этим порядком, от наименьшего к наибольшему.

<E extends T> List <E> lessOf (элементы Iterator <E>, int k)

Возвращает k наименьших элементов из данного итератора в соответствии с этим порядком, от наименьшего к наибольшему.

<S extends T> Порядок <Iterable <S >> лексикографический ()

Возвращает новый порядок, который сортирует итерации, сравнивая соответствующие элементы попарно, пока не будет найден ненулевой результат; навязывает «словарный порядок».

<E расширяет T> E max (E a, E b)

Возвращает большее из двух значений в соответствии с этим порядком.

<E расширяет T> E max (E a, E b, E c, E … покой)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

<E расширяет T> E max (итерируемый <E> итерируемый)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

<E расширяет T> E max (итератор <E>)

Возвращает наибольшее из указанных значений в соответствии с этим порядком.

<E удлиняет T> E min (E a, E b)

Возвращает меньшее из двух значений в соответствии с этим порядком.

<E расширяет T> E min (E a, E b, E c, E … покой)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

<E расширяет T> E мин (итерируемый <E> итерируемый)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

<E расширяет T> E мин (итератор <E>)

Возвращает наименьшее из указанных значений в соответствии с этим порядком.

static <C extends Comparable> Упорядочивание <C> natural ()

Возвращает сериализуемый порядок, который использует естественный порядок значений.

<S extends T> Упорядочивание <S> nullsFirst ()

Возвращает порядок, который обрабатывает нулевое значение как меньшее, чем все другие значения, и использует его для сравнения ненулевых значений.

<S extends T> Упорядочивание <S> nullsLast ()

Возвращает порядок, который обрабатывает нуль как большее, чем все другие значения, и использует этот порядок для сравнения ненулевых значений.

<F> Упорядочивание <F> onResultOf (функция <F ,? extends T>)

Возвращает новый порядок на F, который упорядочивает элементы, сначала применяя к ним функцию, а затем сравнивая эти результаты, используя это.

<S extends T> Упорядочивание <S> reverse ()

Возвращает реверс этого порядка; Порядок, эквивалентный Collections.reverseOrder (Comparator).

<E extends T> List <E> sortedCopy (итерируемые элементы <E>)

Возвращает изменяемый список, содержащий элементы, отсортированные по этому порядку; используйте это только тогда, когда результирующий список может нуждаться в дальнейшей модификации или может содержать ноль.

статическое упорядочение <Object> usingToString ()

Возвращает упорядочение, которое сравнивает объекты по естественному упорядочению их строковых представлений, как возвращено toString ().

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса заказа

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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);
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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]

Гуава — Класс объектов

Класс Objects предоставляет вспомогательные функции, применимые ко всем объектам, таким как equals, hashCode и т. Д.

Декларация класса

Ниже приводится объявление для класса com.google.common.base.Objects.

@GwtCompatible
public final class Objects
   extends Object

Методы класса

Sr.No Метод и описание
1

статическое логическое равенство (Объект a, Объект b)

Определяет, равны ли два возможно нулевых объекта.

2

статический <T> T firstNonNull (T первый, T второй)

Устаревшее. Используйте взамен MoreObjects.firstNonNull (T, T). Этот метод планируется удалить в июне 2016 года.

3

static int hashCode (Object … objects)

Создает хэш-код для нескольких значений.

4

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

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (Class). Этот метод планируется удалить в июне 2016 года

5

static Objects.ToStringHelper toStringHelper (Object self)

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (Object). Этот метод планируется удалить в июне 2016 года.

6

static Objects.ToStringHelper toStringHelper (String className)

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (String). Этот метод планируется удалить в июне 2016 года.

статическое логическое равенство (Объект a, Объект b)

Определяет, равны ли два возможно нулевых объекта.

статический <T> T firstNonNull (T первый, T второй)

Устаревшее. Используйте взамен MoreObjects.firstNonNull (T, T). Этот метод планируется удалить в июне 2016 года.

static int hashCode (Object … objects)

Создает хэш-код для нескольких значений.

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

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (Class). Этот метод планируется удалить в июне 2016 года

static Objects.ToStringHelper toStringHelper (Object self)

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (Object). Этот метод планируется удалить в июне 2016 года.

static Objects.ToStringHelper toStringHelper (String className)

Устаревшее. Вместо этого используйте MoreObjects.toStringHelper (String). Этот метод планируется удалить в июне 2016 года.

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса объектов

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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;
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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

Гуава — Range Range

Диапазон представляет интервал или последовательность. Он используется для получения набора чисел / строк, лежащих в определенном диапазоне.

Декларация класса

Ниже приводится объявление для класса com.google.common.collect.Range <C>.

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

методы

Sr.No Метод и описание
1

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

Возвращает диапазон, который содержит каждое значение типа C.

2

логическое применение (ввод C) Устаревший.

Предоставляется только для удовлетворения интерфейса предиката; используйте вместо этого (C).

3

static <C extends Comparable <? >> Range <C> atLeast (конечная точка C)

Возвращает диапазон, который содержит все значения, большие или равные конечной точке.

4

static <C extends Comparable <? >> Range <C> atMost (конечная точка C)

Возвращает диапазон, который содержит все значения, меньшие или равные конечной точке.

5

Диапазон <C> канонический (домен DiscreteDomain <C>)

Возвращает каноническую форму этого диапазона в заданной области.

6

static <C extends Comparable <? >> Range <C> закрыт (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, большие или равные нижней и меньшие или равные верхней.

7

static <C extends Comparable <? >> Range <C> closedOpen (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, большие или равные нижней и строго меньше верхней.

8

логическое значение содержит (значение C)

Возвращает true, если значение находится в пределах этого диапазона.

9

boolean containsAll (Iterable <? extends C> значения)

Возвращает true, если каждый элемент в значениях содержится в этом диапазоне.

10

static <C extends Comparable <? >> Range <C> downTo (конечная точка C, BoundType boundType)

Возвращает диапазон из заданной конечной точки, который может быть либо включительным (закрытым), либо исключительным (открытым) без верхней границы.

11

static <C extends Comparable <? >> Range <C> encloseAll (Итерируемые значения <C>)

Возвращает минимальный диапазон, который содержит все заданные значения.

12

булево окружение (диапазон <C> прочее)

Возвращает true, если границы другого не выходят за пределы этого диапазона.

13

логическое равенство (объектный объект)

Возвращает true, если объект является диапазоном, имеющим те же конечные точки и связанные типы, что и этот диапазон.

14

static <C extends Comparable <? >> Range <C> большее значение (конечная точка C)

Возвращает диапазон, который содержит все значения, строго превышающие конечную точку.

15

int hashCode ()

Возвращает хеш-код для этого диапазона.

16

логическое hasLowerBound ()

Возвращает true, если этот диапазон имеет более низкую конечную точку.

17

логическое hasUpperBound ()

Возвращает true, если этот диапазон имеет верхнюю конечную точку.

18

Пересечение диапазона <C> (Range <C> connectedRange)

Возвращает максимальный диапазон, заключенный в этот диапазон и connectedRange, если такой диапазон существует.

19

логическое значение isConnected (диапазон <C> другое)

Возвращает true, если существует (возможно, пустой) диапазон, который заключен как в этот диапазон, так и в другой.

20

логическое isEmpty ()

Возвращает true, если этот диапазон имеет форму [v..v) или (v..v].

21

static <C extends Comparable <? >> Range <C> lessThan (конечная точка C)

Возвращает диапазон, который содержит все значения строго меньше, чем конечная точка.

22

BoundType lowerBoundType ()

Возвращает тип нижней границы этого диапазона: BoundType.CLOSED, если диапазон включает нижнюю конечную точку, BoundType.OPEN, если нет.

23

C lowerEndpoint ()

Возвращает нижнюю конечную точку этого диапазона.

24

статический <C расширяет Comparable <? >> Диапазон <C> открыт (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, строго больше нижнего и строго меньше верхнего.

25

static <C extends Comparable <? >> Range <C> openClosed (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, строго больше нижнего и меньше или равные верхнему.

26

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

Возвращает диапазон, который содержит любое значение от нижнего к верхнему, где каждая конечная точка может быть либо включающей (закрытой), либо исключительной (открытой).

27

static <C extends Comparable <? >> Range <C> singleton (значение C)

Возвращает диапазон, который содержит только данное значение.

28

Диапазон <C> диапазона (диапазон <C> другой)

Возвращает минимальный диапазон, который охватывает как этот диапазон, так и другой.

29

Строка toString ()

Возвращает строковое представление этого диапазона, например, «[3..5)» (другие примеры перечислены в документации класса).

30

BoundType upperBoundType ()

Возвращает тип верхней границы этого диапазона: BoundType.CLOSED, если диапазон включает свою верхнюю конечную точку, BoundType.OPEN, если нет.

31

C upperEndpoint ()

Возвращает верхнюю конечную точку этого диапазона.

32

static <C extends Comparable <? >> Range <C> upTo (конечная точка C, BoundType boundType)

Возвращает диапазон без нижней границы до заданной конечной точки, который может быть включающим (закрытым) или исключительным (открытым).

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

Возвращает диапазон, который содержит каждое значение типа C.

логическое применение (ввод C) Устаревший.

Предоставляется только для удовлетворения интерфейса предиката; используйте вместо этого (C).

static <C extends Comparable <? >> Range <C> atLeast (конечная точка C)

Возвращает диапазон, который содержит все значения, большие или равные конечной точке.

static <C extends Comparable <? >> Range <C> atMost (конечная точка C)

Возвращает диапазон, который содержит все значения, меньшие или равные конечной точке.

Диапазон <C> канонический (домен DiscreteDomain <C>)

Возвращает каноническую форму этого диапазона в заданной области.

static <C extends Comparable <? >> Range <C> закрыт (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, большие или равные нижней и меньшие или равные верхней.

static <C extends Comparable <? >> Range <C> closedOpen (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, большие или равные нижней и строго меньше верхней.

логическое значение содержит (значение C)

Возвращает true, если значение находится в пределах этого диапазона.

boolean containsAll (Iterable <? extends C> значения)

Возвращает true, если каждый элемент в значениях содержится в этом диапазоне.

static <C extends Comparable <? >> Range <C> downTo (конечная точка C, BoundType boundType)

Возвращает диапазон из заданной конечной точки, который может быть либо включительным (закрытым), либо исключительным (открытым) без верхней границы.

static <C extends Comparable <? >> Range <C> encloseAll (Итерируемые значения <C>)

Возвращает минимальный диапазон, который содержит все заданные значения.

булево окружение (диапазон <C> прочее)

Возвращает true, если границы другого не выходят за пределы этого диапазона.

логическое равенство (объектный объект)

Возвращает true, если объект является диапазоном, имеющим те же конечные точки и связанные типы, что и этот диапазон.

static <C extends Comparable <? >> Range <C> большее значение (конечная точка C)

Возвращает диапазон, который содержит все значения, строго превышающие конечную точку.

int hashCode ()

Возвращает хеш-код для этого диапазона.

логическое hasLowerBound ()

Возвращает true, если этот диапазон имеет более низкую конечную точку.

логическое hasUpperBound ()

Возвращает true, если этот диапазон имеет верхнюю конечную точку.

Пересечение диапазона <C> (Range <C> connectedRange)

Возвращает максимальный диапазон, заключенный в этот диапазон и connectedRange, если такой диапазон существует.

логическое значение isConnected (диапазон <C> другое)

Возвращает true, если существует (возможно, пустой) диапазон, который заключен как в этот диапазон, так и в другой.

логическое isEmpty ()

Возвращает true, если этот диапазон имеет форму [v..v) или (v..v].

static <C extends Comparable <? >> Range <C> lessThan (конечная точка C)

Возвращает диапазон, который содержит все значения строго меньше, чем конечная точка.

BoundType lowerBoundType ()

Возвращает тип нижней границы этого диапазона: BoundType.CLOSED, если диапазон включает нижнюю конечную точку, BoundType.OPEN, если нет.

C lowerEndpoint ()

Возвращает нижнюю конечную точку этого диапазона.

статический <C расширяет Comparable <? >> Диапазон <C> открыт (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, строго больше нижнего и строго меньше верхнего.

static <C extends Comparable <? >> Range <C> openClosed (C ниже, C сверху)

Возвращает диапазон, который содержит все значения, строго больше нижнего и меньше или равные верхнему.

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

Возвращает диапазон, который содержит любое значение от нижнего к верхнему, где каждая конечная точка может быть либо включающей (закрытой), либо исключительной (открытой).

static <C extends Comparable <? >> Range <C> singleton (значение C)

Возвращает диапазон, который содержит только данное значение.

Диапазон <C> диапазона (диапазон <C> другой)

Возвращает минимальный диапазон, который охватывает как этот диапазон, так и другой.

Строка toString ()

Возвращает строковое представление этого диапазона, например, «[3..5)» (другие примеры перечислены в документации класса).

BoundType upperBoundType ()

Возвращает тип верхней границы этого диапазона: BoundType.CLOSED, если диапазон включает свою верхнюю конечную точку, BoundType.OPEN, если нет.

C upperEndpoint ()

Возвращает верхнюю конечную точку этого диапазона.

static <C extends Comparable <? >> Range <C> upTo (конечная точка C, BoundType boundType)

Возвращает диапазон без нижней границы до заданной конечной точки, который может быть включающим (закрытым) или исключительным (открытым).

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса Range

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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("]");
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

[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

Класс Throwables предоставляет служебные методы, связанные с интерфейсом Throwable.

Декларация класса

Ниже приводится объявление для класса com.google.common.base.Throwables.

public final class Throwables
   extends Object

Методы класса

Sr.No Метод и описание
1

статический список <Throwable> getCausalChain (Throwable throwable)

Получает цепочку причин Throwable в виде списка.

2

статический Throwable getRootCause (Throwable throwable)

Возвращает самую внутреннюю причину броска.

3

статическая строка getStackTraceAsString (Throwable throwable)

Возвращает строку, содержащую результат toString (), за которой следует полная рекурсивная трассировка стека throwable.

4

статическое распространение RuntimeException (Throwable throwable)

Распространяет throwable как есть, если это экземпляр RuntimeException или Error, или же в качестве последнего средства, оборачивает его в RuntimeException, а затем распространяется.

5

static <X extends Throwable> void spreadateIfInstanceOf (Throwable throwable, Class <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если он является экземпляром Объявленного типа.

6

static void spreadateIfPossible (Throwable throwable)

Распространяется в точности как есть, если и только если это экземпляр RuntimeException или Error.

7

static <X extends Throwable> void пропагатаIfPossible (Throwable throwable, класс <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error или Объявленный тип.

8

static <X1 extends Throwable, X2 extends Throwable> void spreadateIfPossible (Throwable throwable, класс <X1> DeclaType1, класс <X2> DeclaType2)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error, DeclaType1 или DeclaType2.

статический список <Throwable> getCausalChain (Throwable throwable)

Получает цепочку причин Throwable в виде списка.

статический Throwable getRootCause (Throwable throwable)

Возвращает самую внутреннюю причину броска.

статическая строка getStackTraceAsString (Throwable throwable)

Возвращает строку, содержащую результат toString (), за которой следует полная рекурсивная трассировка стека throwable.

статическое распространение RuntimeException (Throwable throwable)

Распространяет throwable как есть, если это экземпляр RuntimeException или Error, или же в качестве последнего средства, оборачивает его в RuntimeException, а затем распространяется.

static <X extends Throwable> void spreadateIfInstanceOf (Throwable throwable, Class <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если он является экземпляром Объявленного типа.

static void spreadateIfPossible (Throwable throwable)

Распространяется в точности как есть, если и только если это экземпляр RuntimeException или Error.

static <X extends Throwable> void пропагатаIfPossible (Throwable throwable, класс <X> Объявленный тип)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error или Объявленный тип.

static <X1 extends Throwable, X2 extends Throwable> void spreadateIfPossible (Throwable throwable, класс <X1> DeclaType1, класс <X2> DeclaType2)

Распространяется с возможностью отбрасывания в том виде, в каком оно есть, только в том случае, если оно является экземпляром RuntimeException, Error, DeclaType1 или DeclaType2.

Унаследованные методы

Этот класс наследует методы из следующего класса —

  • java.lang.Object

Пример класса Throwables

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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 {
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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

Гуава — Коллекции Утилиты

Guava представляет множество продвинутых коллекций, основанных на опыте разработчиков в разработке приложений. Ниже приведен список полезных коллекций —

Sr.No Название коллекции и описание
1 Multiset

Расширение интерфейса Set для разрешения дублирования элементов.

2 Multimap

Расширение интерфейса Map, позволяющее сопоставлять его ключи нескольким значениям одновременно.

3 BiMap

Расширение интерфейса Map для поддержки обратных операций.

4 Таблица

Таблица представляет собой специальную карту, в которой два ключа могут быть заданы комбинированным образом для ссылки на одно значение.

Расширение интерфейса Set для разрешения дублирования элементов.

Расширение интерфейса Map, позволяющее сопоставлять его ключи нескольким значениям одновременно.

Расширение интерфейса Map для поддержки обратных операций.

Таблица представляет собой специальную карту, в которой два ключа могут быть заданы комбинированным образом для ссылки на одно значение.

Гуава — утилиты кэширования

Guava предоставляет очень мощный механизм кэширования на основе памяти с помощью интерфейса LoadingCache <K, V>. Значения автоматически загружаются в кеш, и он предоставляет множество вспомогательных методов, полезных для кеширования.

Декларация интерфейса

Ниже приводится объявление для интерфейса com.google.common.cache.LoadingCache <K, V>.

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

Методы интерфейса

Sr.No Метод и описание
1

V применить (клавиша K)

Устаревшее. Предоставляется для удовлетворения функции интерфейса; используйте вместо этого get (K) или getUnchecked (K).

2

ConcurrentMap <K, V> asMap ()

Возвращает представление записей, хранящихся в этом кэше, в виде многопоточной карты.

3

V получить (K ключ)

Возвращает значение, связанное с ключом в этом кэше, сначала загружая это значение, если необходимо.

4

ImmutableMap <K, V> getAll (итерируемые <? Extends K> ключи)

Возвращает карту значений, связанных с ключами, создавая или получая эти значения при необходимости.

5

V getUnchecked (клавиша K)

Возвращает значение, связанное с ключом в этом кэше, сначала загружая это значение, если необходимо.

6

обновление пустоты (клавиша K)

Загружает новое значение для ключа, возможно, асинхронно.

V применить (клавиша K)

Устаревшее. Предоставляется для удовлетворения функции интерфейса; используйте вместо этого get (K) или getUnchecked (K).

ConcurrentMap <K, V> asMap ()

Возвращает представление записей, хранящихся в этом кэше, в виде многопоточной карты.

V получить (K ключ)

Возвращает значение, связанное с ключом в этом кэше, сначала загружая это значение, если необходимо.

ImmutableMap <K, V> getAll (итерируемые <? Extends K> ключи)

Возвращает карту значений, связанных с ключами, создавая или получая эти значения при необходимости.

V getUnchecked (клавиша K)

Возвращает значение, связанное с ключом в этом кэше, сначала загружая это значение, если необходимо.

обновление пустоты (клавиша K)

Загружает новое значение для ключа, возможно, асинхронно.

Пример LoadingCache

Создайте следующую Java-программу, используя любой редактор по вашему выбору, скажем, 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();
   }	
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\Guava>javac GuavaTester.java

Теперь запустите GuavaTester, чтобы увидеть результат.

C:\Guava>java GuavaTester

Смотрите результат.

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 представляет множество продвинутых строковых утилит, основанных на опыте разработчиков в разработке приложений. Ниже приведен список полезных утилит на основе строк —

Sr.No Название и описание утилиты
1 столяр

Утилита для объединения объектов, строк и т. Д.

2 Разветвитель

Утилита для разбиения строки.

3 CharMatcher

Утилита для символьных операций.

4 CaseFormat

Утилита для изменения форматов строк.

Утилита для объединения объектов, строк и т. Д.

Утилита для разбиения строки.

Утилита для символьных операций.

Утилита для изменения форматов строк.

Гуава — Примитивные утилиты

Поскольку примитивные типы Java не могут использоваться для передачи в качестве входных данных обобщенных или коллекционных данных, Guava предоставил множество классов утилит Wrapper для обработки примитивных типов как объектов. Ниже приведен список полезных примитивных утилит обработки —

Sr.No Название и описание утилиты
1 Б

Утилита для примитивного байта.

2 Шорты

Утилита для примитивов.

3 Ints

Утилита для примитивных инт.

4 Лонги

Утилита для примитива долго.

5 Поплавки

Утилита для примитивного плавания.

6 парный

Утилита для примитивного двойника.

7 Символов

Утилита для примитивного символа.

8 Булевы

Утилита для примитивного логического.

Утилита для примитивного байта.

Утилита для примитивов.

Утилита для примитивных инт.

Утилита для примитива долго.

Утилита для примитивного плавания.

Утилита для примитивного двойника.

Утилита для примитивного символа.

Утилита для примитивного логического.

Гуава — математические утилиты

Guava предоставляет связанные с математикой классы утилит для обработки int, long и BigInteger. Ниже приведен список полезных утилит —

Математическая утилита для int.

Математическая утилита надолго.

Математическая утилита для BigInteger.