diff --git a/core-java-modules/core-java-currency/README.md b/core-java-modules/core-java-currency/README.md
new file mode 100644
index 000000000000..e9ce3350bfde
--- /dev/null
+++ b/core-java-modules/core-java-currency/README.md
@@ -0,0 +1 @@
+#core-java-currency
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/pom.xml b/core-java-modules/core-java-currency/pom.xml
new file mode 100644
index 000000000000..1c1845629a5e
--- /dev/null
+++ b/core-java-modules/core-java-currency/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+ core-java-currency
+ jar
+ core-java-currency
+
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+ --enable-preview
+
+
+
+
+
+
+ 17
+ 17
+ 1.18.24
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyLocaleUtil.java b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyLocaleUtil.java
new file mode 100644
index 000000000000..fb5659944996
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyLocaleUtil.java
@@ -0,0 +1,11 @@
+package com.baeldung.currency.utils;
+
+import java.util.Currency;
+import java.util.Locale;
+
+public class CurrencyLocaleUtil {
+ public String getSymbolForLocale(Locale locale) {
+ Currency currency = Currency.getInstance(locale);
+ return currency.getSymbol();
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyMapUtil.java b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyMapUtil.java
new file mode 100644
index 000000000000..17ed3b9ac6a6
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyMapUtil.java
@@ -0,0 +1,15 @@
+package com.baeldung.currency.utils;
+
+import java.util.Map;
+
+public class CurrencyMapUtil {
+ private static final Map currencymap = Map.of(
+ "USD", "$",
+ "EUR", "€",
+ "INR", "₹"
+ );
+
+ public static String getSymbol(String currencyCode) {
+ return currencymap.getOrDefault(currencyCode, "Unknown");
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyUtil.java b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyUtil.java
new file mode 100644
index 000000000000..1cfe4cbade4c
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/main/java/com/baeldung/currency/utils/CurrencyUtil.java
@@ -0,0 +1,10 @@
+package com.baeldung.currency.utils;
+
+import java.util.Currency;
+
+public class CurrencyUtil {
+ public static String getSymbol(String currencyCode) {
+ Currency currency = Currency.getInstance(currencyCode);
+ return currency.getSymbol();
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyLocaleUtilTest.java b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyLocaleUtilTest.java
new file mode 100644
index 000000000000..fbeacfdefb88
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyLocaleUtilTest.java
@@ -0,0 +1,15 @@
+package com.baeldung.currency.utils;
+
+import org.junit.jupiter.api.Test;
+import java.util.Locale;
+import static org.junit.jupiter.api.Assertions.*;
+
+class CurrencyLocaleUtilTest {
+ private final CurrencyLocaleUtil currencyLocale = new CurrencyLocaleUtil();
+
+ @Test
+ void givenLocale_whenGetSymbolForLocale_thenReturnsLocalizedSymbol() {
+ assertEquals("$", currencyLocale.getSymbolForLocale(Locale.US));
+ assertEquals("€", currencyLocale.getSymbolForLocale(Locale.FRANCE));
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyMapUtilTest.java b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyMapUtilTest.java
new file mode 100644
index 000000000000..21f6e019e391
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyMapUtilTest.java
@@ -0,0 +1,18 @@
+package com.baeldung.currency.utils;
+
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+class CurrencyMapUtilTest {
+ @Test
+ void givenValidCurrencyCode_whenGetSymbol_thenReturnsCorrectSymbol() {
+ assertEquals("$", CurrencyMapUtil.getSymbol("USD"));
+ assertEquals("€", CurrencyMapUtil.getSymbol("EUR"));
+ assertEquals("₹", CurrencyMapUtil.getSymbol("INR"));
+ }
+
+ @Test
+ void givenInvalidCurrencyCode_whenGetSymbol_thenReturnsUnknown() {
+ assertEquals("Unknown", CurrencyMapUtil.getSymbol("XYZ"));
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyUtilTest.java b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyUtilTest.java
new file mode 100644
index 000000000000..548cc9fc87fc
--- /dev/null
+++ b/core-java-modules/core-java-currency/src/test/java/com/baeldung/currency/utils/CurrencyUtilTest.java
@@ -0,0 +1,17 @@
+package com.baeldung.currency.utils;
+
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+class CurrencyUtilTest {
+ @Test
+ void givenValidCurrencyCode_whenGetSymbol_thenReturnsCorrectSymbol() {
+ assertEquals("$", CurrencyUtil.getSymbol("USD"));
+ assertEquals("€", CurrencyUtil.getSymbol("EUR"));
+ }
+
+ @Test
+ void givenInvalidCurrencyCode_whenGetSymbol_thenThrowsException() {
+ assertThrows(IllegalArgumentException.class, () -> CurrencyUtil.getSymbol("INVALID"));
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index b84baf6e3d0a..93ea3526eca0 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -123,6 +123,7 @@
core-java-concurrency-collections
core-java-concurrency-collections-2
core-java-console
+ core-java-currency
core-java-datetime-string-2
core-java-date-operations
core-java-date-operations-2