/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/thealgorithms/datastructures/heaps/HeapElement.java
173 строки
5 KB
Hardik Pawar
Enhance docs, add tests in `MaxHeap` (#5983)
29 окт 2024, 23:47
Не верифицирован
29 окт 2024, 23:47
03bb8ee
Код
Авторство
О чём код?
package com.thealgorithms.datastructures.heaps; /** * Class representing an element in a heap. * * <p> * A heap element contains two attributes: a key used for ordering in the heap * (which can be of type int or double, either as primitive types or as wrapper objects) * and an additional immutable object that can store any supplementary information the user desires. * Note that using mutable objects may compromise the integrity of this information. * </p> * * <p> * The key attribute is used to determine the order of elements in the heap, * while the additionalInfo attribute can carry user-defined data associated with the key. * </p> * * <p> * This class provides multiple constructors to accommodate various key types and includes * methods to retrieve the key and additional information. * </p> * * @author Nicolas Renard */ public class HeapElement { private final double key; private final Object additionalInfo; // Constructors /** * Creates a HeapElement with the specified key and additional information. * * @param key the key of the element (primitive type double) * @param info any immutable object containing additional information, may be null */ public HeapElement(double key, Object info) { this.key = key; this.additionalInfo = info; } /** * Creates a HeapElement with the specified key and additional information. * * @param key the key of the element (primitive type int) * @param info any immutable object containing additional information, may be null */ public HeapElement(int key, Object info) { this.key = key; this.additionalInfo = info; } /** * Creates a HeapElement with the specified key and additional information. * * @param key the key of the element (object type Integer) * @param info any immutable object containing additional information, may be null */ public HeapElement(Integer key, Object info) { this.key = key; this.additionalInfo = info; } /** * Creates a HeapElement with the specified key and additional information. * * @param key the key of the element (object type Double) * @param info any immutable object containing additional information, may be null */ public HeapElement(Double key, Object info) { this.key = key; this.additionalInfo = info; } /** * Creates a HeapElement with the specified key. * * @param key the key of the element (primitive type double) */ public HeapElement(double key) { this.key = key; this.additionalInfo = null; } /** * Creates a HeapElement with the specified key. * * @param key the key of the element (primitive type int) */ public HeapElement(int key) { this.key = key; this.additionalInfo = null; } /** * Creates a HeapElement with the specified key. * * @param key the key of the element (object type Integer) */ public HeapElement(Integer key) { this.key = key; this.additionalInfo = null; } /** * Creates a HeapElement with the specified key. * * @param key the key of the element (object type Double) */ public HeapElement(Double key) { this.key = key; this.additionalInfo = null; } // Getters /** * Returns the object containing the additional information provided by the user. * * @return the additional information */ public Object getInfo() { return additionalInfo; } /** * Returns the key value of the element. * * @return the key of the element */ public double getKey() { return key; } // Overridden object methods /** * Returns a string representation of the heap element. * * @return a string describing the key and additional information */ @Override public String toString() { return "Key: " + key + " - " + (additionalInfo != null ? additionalInfo.toString() : "No additional info"); } /** * @param o : an object to compare with the current element * @return true if the keys on both elements are identical and the * additional info objects are identical. */ @Override public boolean equals(Object o) { if (o instanceof HeapElement otherHeapElement) { return this.key == otherHeapElement.key && (this.additionalInfo != null ? this.additionalInfo.equals(otherHeapElement.additionalInfo) : otherHeapElement.additionalInfo == null); } return false; } /** * Returns a hash code value for the heap element. * * @return a hash code value for this heap element */ @Override public int hashCode() { int result = 31 * (int) key; result += (additionalInfo != null) ? additionalInfo.hashCode() : 0; return result; } public String getValue() { return additionalInfo.toString(); } }