Skip to content

Commit 7a1c91c

Browse files
authored
Merge branch 'master' into bag_improve
2 parents 38bdeca + a8a1aba commit 7a1c91c

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/main/java/com/thealgorithms/conversions/UnitConversions.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,47 @@
55
import java.util.Map;
66
import org.apache.commons.lang3.tuple.Pair;
77

8+
/**
9+
* A utility class to perform unit conversions between different measurement systems.
10+
*
11+
* <p>Currently, the class supports temperature conversions between several scales:
12+
* Celsius, Fahrenheit, Kelvin, Réaumur, Delisle, and Rankine.
13+
*
14+
* <h2>Example Usage</h2>
15+
* <pre>
16+
* double result = UnitConversions.TEMPERATURE.convert("Celsius", "Fahrenheit", 100.0);
17+
* // Output: 212.0 (Celsius to Fahrenheit conversion of 100°C)
18+
* </pre>
19+
*
20+
* <p>This class makes use of an {@link UnitsConverter} that handles the conversion logic
21+
* based on predefined affine transformations. These transformations include scaling factors
22+
* and offsets for temperature conversions.
23+
*
24+
* <h2>Temperature Scales Supported</h2>
25+
* <ul>
26+
* <li>Celsius</li>
27+
* <li>Fahrenheit</li>
28+
* <li>Kelvin</li>
29+
* <li>Réaumur</li>
30+
* <li>Delisle</li>
31+
* <li>Rankine</li>
32+
* </ul>
33+
*/
834
public final class UnitConversions {
935
private UnitConversions() {
1036
}
1137

38+
/**
39+
* A preconfigured instance of {@link UnitsConverter} for temperature conversions.
40+
* The converter handles conversions between the following temperature units:
41+
* <ul>
42+
* <li>Kelvin to Celsius</li>
43+
* <li>Celsius to Fahrenheit</li>
44+
* <li>Réaumur to Celsius</li>
45+
* <li>Delisle to Celsius</li>
46+
* <li>Rankine to Kelvin</li>
47+
* </ul>
48+
*/
1249
public static final UnitsConverter TEMPERATURE = new UnitsConverter(Map.ofEntries(entry(Pair.of("Kelvin", "Celsius"), new AffineConverter(1.0, -273.15)), entry(Pair.of("Celsius", "Fahrenheit"), new AffineConverter(9.0 / 5.0, 32.0)),
1350
entry(Pair.of("Réaumur", "Celsius"), new AffineConverter(5.0 / 4.0, 0.0)), entry(Pair.of("Delisle", "Celsius"), new AffineConverter(-2.0 / 3.0, 100.0)), entry(Pair.of("Rankine", "Kelvin"), new AffineConverter(5.0 / 9.0, 0.0))));
1451
}

src/test/java/com/thealgorithms/conversions/UnitConversionsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
public class UnitConversionsTest {
1515
private static void addData(Stream.Builder<Arguments> builder, Map<String, Double> values) {
16-
for (final var first : values.entrySet()) {
17-
for (final var second : values.entrySet()) {
16+
for (var first : values.entrySet()) {
17+
for (var second : values.entrySet()) {
1818
if (!first.getKey().equals(second.getKey())) {
1919
builder.add(Arguments.of(first.getKey(), second.getKey(), first.getValue(), second.getValue()));
2020
}

0 commit comments

Comments
 (0)