Автор оригинала: Pankaj Kumar.
Класс Java Pair хранит два значения в виде кортежа. Это может быть полезно для получения функции, возвращающей два значения.
Java имеет встроенный класс Pair начиная с Java 8 и далее. Вот почему в этом уроке мы не только рассмотрим встроенный класс pair, но и узнаем, как создать наш собственный класс pair.
Класс Pair очень полезен при использовании древовидной структуры данных. При использовании рекурсии в дереве класс pair позволяет легко передавать значения из одного узла в другой. Эти значения могут быть минимальным и максимальным значением узла до этого узла. Это предотвратило бы повторное посещение определенных узлов снова и снова.
Встроенный класс пар в Java
Встроенный класс Pair является частью пакета JavaFX. Однако этот пакет не является частью стандартной установки OpenJDK. Мы можем добавить его в наш проект, используя следующие зависимости maven.
org.openjfx javafx-base 14.0.1
Давайте сразу перейдем к использованию встроенных парных классов в Java.
Импорт класса пар
Для импорта используйте:
import javafx.util.Pair;
Встроенный класс pair использует обозначения ключа и значения для хранения пары.
Однако не путайте его с хэш-картой .
Объявление объекта пары
Pairp = new Pair<>(7,"Hello");
Это создает объект пары типа <Целое число, строка> .
Конструктор принимает значения 7 и “привет” и сохраняет их в классе Pair.
Доступ к значениям
Мы можем получить доступ к значениям из объекта пары с помощью методов getKey() и GetValue ().
- getKey получает первое значение.
- GetValue получает второе значение.
System.out.println("the first value is :" + p.getKey()); System.out.println("the first second is :" + p.getValue());
Полный код для этого раздела::
import javafx.util.Pair; public class Main { public static void main(String[] args) { Pairp = new Pair<>(7,"Hello"); System.out.println("the first value is :" + p.getKey()); System.out.println("the first second is :" + p.getValue()); } }
Создание собственного класса пар
Создание нашего собственного класса пар-лучшая альтернатива, так как мы можем настроить его в соответствии с нашими собственными предпочтениями. Кроме того, если вы не используете JavaFX в своем проекте, имеет смысл полностью избегать его.
1. Определение пользовательского класса пар
Для простоты мы используем класс pair, в котором хранятся два значения. Целое число и строка. Использование дженериков тоже было бы хорошей идеей.
public class Pair { int first; String second; public Pair(int first, String second) { this.first = first; this.second = second; } }
Две переменные первая и вторая были определены для хранения двух значений типа int и String соответственно.
Конструктор принимает два значения и присваивает их переменным.
2. Парный класс в действии
Чтобы использовать только что созданный класс pair, определите объект класса pair и вызовите конструктор.
Pair a = new Pair(1, "one");
Это создает объект пары с 1, хранящимся в первом, и “единицей”, хранящейся во втором.
Для доступа к значениям:
System.out.println("the first value is :" + a.first); System.out.println("the first second is :" + a.second);
Поскольку класс pair определен нами, мы можем настроить и добавить в него функцию печати.
Код для класса пар:
public class Pair { int first; String second; public Pair(int first, String second) { this.first = first; this.second = second; } public void print(){ System.out.println("< "+first+", "+second+ " >"); } public static void main(String[] args){ Pair a = new Pair(1,"Hello"); a.print(); } }
Включая функцию печати, этот способ является хорошей привычкой к кодированию, так как теперь переменные можно сделать закрытыми. Сохранение открытых переменных небезопасно.
Использование класса сопряжения с функцией
Класс Pair может использоваться для возврата двух значений из функции. Для этого тип возвращаемой функции должен быть pair.
public static Pair func (Scanner s){ System.out.println("what is your name"); String name = s.next(); System.out.println("what is your favourite number?"); int num = s.nextInt(); Pair ans = new Pair(num, name); return ans; }
Объект, возвращаемый этой функцией, может быть захвачен в основной функции. Давайте напечатаем объект в главном.
public static void main(String[] args) { Scanner s = New Scanner(System.in) Pair ans = func(s); ans.print(); }
Полный код для этого раздела выглядит следующим образом.
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = New Scanner(System.in) Pair ans = func(s); ans.print(); } public static Pair func (Scanner s){ System.out.println("what is your name"); String name = s.next(); System.out.println("what is your favourite number?"); int num = s.nextInt(); Pair ans = new Pair(num, name); return ans; } }
Вывод
Парные классы важны и могут повысить эффективность кода при правильном использовании. Одной из интересных областей использования класса pair является хранение максимальных и минимальных значений поддерева в задачах BST. Это экономит несколько обходов вниз по дереву.