From 1cba0bcef28b3be54362648bea1dfe0721f12a2e Mon Sep 17 00:00:00 2001 From: Michael Berry Date: Tue, 28 Sep 2021 14:10:21 +0100 Subject: [PATCH] SortedProperties should sort entries in same way as keys (#256) --- .../properties/SortedProperties.java | 14 ++++++++++++++ .../properties/SortedPropertiesTest.java | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java b/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java index 3ab41be79..7a36d80ae 100644 --- a/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java +++ b/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java @@ -17,10 +17,13 @@ package org.apache.commons.collections4.properties; +import java.util.AbstractMap; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.Set; @@ -48,4 +51,15 @@ public class SortedProperties extends Properties { Collections.sort(keys); return new IteratorEnumeration<>(keys.iterator()); } + + @Override + public Set> entrySet() { + Enumeration keys = keys(); + Set> entrySet = new LinkedHashSet<>(); + while (keys.hasMoreElements()) { + Object key = keys.nextElement(); + entrySet.add(new AbstractMap.SimpleEntry<>(key, getProperty((String) key))); + } + return entrySet; + } } diff --git a/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java b/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java index ce294bf88..1da63cb74 100644 --- a/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java +++ b/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java @@ -18,7 +18,11 @@ package org.apache.commons.collections4.properties; import java.util.Enumeration; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import org.apache.commons.collections4.MultiSet; import org.junit.Assert; import org.junit.Test; @@ -35,4 +39,18 @@ public class SortedPropertiesTest { Assert.assertEquals(String.valueOf(ch), keys.nextElement()); } } + + @Test + public void testEntrySet() { + final SortedProperties sortedProperties = new SortedProperties(); + for (char ch = 'Z'; ch >= 'A'; ch--) { + sortedProperties.put(String.valueOf(ch), "Value" + ch); + } + final Iterator> entries = sortedProperties.entrySet().iterator(); + for (char ch = 'A'; ch <= 'Z'; ch++) { + Map.Entry entry = entries.next(); + Assert.assertEquals(String.valueOf(ch), entry.getKey()); + Assert.assertEquals("Value" + ch, entry.getValue()); + } + } }