This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-text.git
commit 834adcb761a92700f7f2d6ecb45ff77bebf28384 Author: Gary Gregory <[email protected]> AuthorDate: Sat Sep 24 09:33:19 2022 -0400 Better use of Stream and Map APIs Make some package private types final --- .../org/apache/commons/text/AlphabetConverter.java | 29 ++++++++------------ .../apache/commons/text/ExtendedMessageFormat.java | 7 +---- .../java/org/apache/commons/text/StrBuilder.java | 4 +-- .../org/apache/commons/text/diff/EditScript.java | 4 +-- .../text/lookup/InterpolatorStringLookup.java | 9 ++---- .../apache/commons/text/similarity/Counter.java | 9 ++---- .../text/similarity/IntersectionSimilarity.java | 32 ++++++++++------------ .../commons/text/similarity/RegexTokenizer.java | 2 +- .../text/translate/AggregateTranslator.java | 8 ++---- .../commons/text/translate/EntityArrays.java | 8 ++---- 10 files changed, 42 insertions(+), 70 deletions(-) diff --git a/src/main/java/org/apache/commons/text/AlphabetConverter.java b/src/main/java/org/apache/commons/text/AlphabetConverter.java index bad9460d..605d32ac 100644 --- a/src/main/java/org/apache/commons/text/AlphabetConverter.java +++ b/src/main/java/org/apache/commons/text/AlphabetConverter.java @@ -264,16 +264,13 @@ public final class AlphabetConverter { * @return The reconstructed AlphabetConverter * @see AlphabetConverter#getOriginalToEncoded() */ - public static AlphabetConverter createConverterFromMap( - final Map<Integer, String> originalToEncoded) { - final Map<Integer, String> unmodifiableOriginalToEncoded = - Collections.unmodifiableMap(originalToEncoded); + public static AlphabetConverter createConverterFromMap(final Map<Integer, String> originalToEncoded) { + final Map<Integer, String> unmodifiableOriginalToEncoded = Collections.unmodifiableMap(originalToEncoded); final Map<String, String> encodedToOriginal = new LinkedHashMap<>(); int encodedLetterLength = 1; - for (final Entry<Integer, String> e - : unmodifiableOriginalToEncoded.entrySet()) { + for (final Entry<Integer, String> e : unmodifiableOriginalToEncoded.entrySet()) { final String originalAsString = codePointToString(e.getKey()); encodedToOriginal.put(e.getValue(), originalAsString); @@ -282,9 +279,7 @@ public final class AlphabetConverter { } } - return new AlphabetConverter(unmodifiableOriginalToEncoded, - encodedToOriginal, - encodedLetterLength); + return new AlphabetConverter(unmodifiableOriginalToEncoded, encodedToOriginal, encodedLetterLength); } /** @@ -508,14 +503,14 @@ public final class AlphabetConverter { @Override public String toString() { final StringBuilder sb = new StringBuilder(); - - for (final Entry<Integer, String> entry - : originalToEncoded.entrySet()) { - sb.append(codePointToString(entry.getKey())) - .append(ARROW) - .append(entry.getValue()).append(System.lineSeparator()); - } - + // @formatter:off + originalToEncoded.forEach((k, v) -> { + sb.append(codePointToString(k)) + .append(ARROW) + .append(k) + .append(System.lineSeparator()); + }); + // @formatter:on return sb.toString(); } } diff --git a/src/main/java/org/apache/commons/text/ExtendedMessageFormat.java b/src/main/java/org/apache/commons/text/ExtendedMessageFormat.java index 6b42afe7..1e149408 100644 --- a/src/main/java/org/apache/commons/text/ExtendedMessageFormat.java +++ b/src/main/java/org/apache/commons/text/ExtendedMessageFormat.java @@ -289,12 +289,7 @@ public class ExtendedMessageFormat extends MessageFormat { if (coll == null || coll.isEmpty()) { return false; } - for (final Object name : coll) { - if (name != null) { - return true; - } - } - return false; + return coll.stream().anyMatch(Objects::nonNull); } /** diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java b/src/main/java/org/apache/commons/text/StrBuilder.java index f0c0099d..ef9b0176 100644 --- a/src/main/java/org/apache/commons/text/StrBuilder.java +++ b/src/main/java/org/apache/commons/text/StrBuilder.java @@ -767,9 +767,7 @@ public class StrBuilder implements CharSequence, Appendable, Serializable, Build */ public StrBuilder appendAll(final Iterable<?> iterable) { if (iterable != null) { - for (final Object o : iterable) { - append(o); - } + iterable.forEach(this::append); } return this; } diff --git a/src/main/java/org/apache/commons/text/diff/EditScript.java b/src/main/java/org/apache/commons/text/diff/EditScript.java index 60de7136..06e8a1c3 100644 --- a/src/main/java/org/apache/commons/text/diff/EditScript.java +++ b/src/main/java/org/apache/commons/text/diff/EditScript.java @@ -127,9 +127,7 @@ public class EditScript<T> { * @param visitor the visitor that will visit all commands in turn */ public void visit(final CommandVisitor<T> visitor) { - for (final EditCommand<T> command : commands) { - command.accept(visitor); - } + commands.forEach(command -> command.accept(visitor)); } } diff --git a/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java b/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java index 72b36c31..c78e0017 100644 --- a/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java +++ b/src/main/java/org/apache/commons/text/lookup/InterpolatorStringLookup.java @@ -17,9 +17,9 @@ package org.apache.commons.text.lookup; import java.util.Collections; -import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.stream.Collectors; /** * Proxies other {@link StringLookup}s using a keys within ${} markers using the format "${StringLookup:Key}". @@ -63,12 +63,9 @@ class InterpolatorStringLookup extends AbstractStringLookup { * @param addDefaultLookups whether the default lookups should be used. */ InterpolatorStringLookup(final Map<String, StringLookup> stringLookupMap, final StringLookup defaultStringLookup, - final boolean addDefaultLookups) { + final boolean addDefaultLookups) { this.defaultStringLookup = defaultStringLookup; - this.stringLookupMap = new HashMap<>(stringLookupMap.size()); - for (final Entry<String, StringLookup> entry : stringLookupMap.entrySet()) { - this.stringLookupMap.put(StringLookupFactory.toKey(entry.getKey()), entry.getValue()); - } + this.stringLookupMap = stringLookupMap.entrySet().stream().collect(Collectors.toMap(e -> StringLookupFactory.toKey(e.getKey()), Entry::getValue)); if (addDefaultLookups) { StringLookupFactory.INSTANCE.addDefaultStringLookups(this.stringLookupMap); } diff --git a/src/main/java/org/apache/commons/text/similarity/Counter.java b/src/main/java/org/apache/commons/text/similarity/Counter.java index b49a1b30..b73a763a 100644 --- a/src/main/java/org/apache/commons/text/similarity/Counter.java +++ b/src/main/java/org/apache/commons/text/similarity/Counter.java @@ -33,7 +33,7 @@ import java.util.Map; final class Counter { /** - * It counts how many times each element provided occurred in an array and + * Counts how many times each element provided occurred in an array and * returns a dict with the element as key and the count as value. * * @param tokens array of tokens @@ -42,12 +42,7 @@ final class Counter { public static Map<CharSequence, Integer> of(final CharSequence[] tokens) { final Map<CharSequence, Integer> innerCounter = new HashMap<>(); for (final CharSequence token : tokens) { - if (innerCounter.containsKey(token)) { - int value = innerCounter.get(token); - innerCounter.put(token, ++value); - } else { - innerCounter.put(token, 1); - } + innerCounter.put(token, innerCounter.containsKey(token) ? innerCounter.get(token) + 1 : 1); } return innerCounter; } diff --git a/src/main/java/org/apache/commons/text/similarity/IntersectionSimilarity.java b/src/main/java/org/apache/commons/text/similarity/IntersectionSimilarity.java index b3bd4f34..496af222 100644 --- a/src/main/java/org/apache/commons/text/similarity/IntersectionSimilarity.java +++ b/src/main/java/org/apache/commons/text/similarity/IntersectionSimilarity.java @@ -36,12 +36,21 @@ import java.util.function.Function; * @see HashMap */ public class IntersectionSimilarity<T> implements SimilarityScore<IntersectionResult> { + /** * Mutable counter class for storing the count of elements. */ - private static class BagCount { - /** The count. This is initialized to 1 upon construction. */ - int count = 1; + private static final class BagCount { + + /** Private, mutable but must be used as immutable. */ + private static final BagCount ZERO = new BagCount(); + + private BagCount() { + this.count = 0; + } + + /** The count. */ + int count; } // The following is adapted from commons-collections for a Bag. @@ -73,12 +82,7 @@ public class IntersectionSimilarity<T> implements SimilarityScore<IntersectionRe * @param object the object to add */ void add(final T object) { - final BagCount mut = map.get(object); - if (mut == null) { - map.put(object, new BagCount()); - } else { - mut.count++; - } + map.computeIfAbsent(object, k -> new BagCount()).count++; } /** @@ -98,11 +102,7 @@ public class IntersectionSimilarity<T> implements SimilarityScore<IntersectionRe * @return The number of occurrences of the object, zero if not found */ int getCount(final Object object) { - final BagCount count = map.get(object); - if (count != null) { - return count.count; - } - return 0; + return map.getOrDefault(object, BagCount.ZERO).count; } /** @@ -231,9 +231,7 @@ public class IntersectionSimilarity<T> implements SimilarityScore<IntersectionRe */ private TinyBag toBag(final Collection<T> objects) { final TinyBag bag = new TinyBag(objects.size()); - for (final T t : objects) { - bag.add(t); - } + objects.forEach(bag::add); return bag; } } diff --git a/src/main/java/org/apache/commons/text/similarity/RegexTokenizer.java b/src/main/java/org/apache/commons/text/similarity/RegexTokenizer.java index af5a5a97..213e01c7 100644 --- a/src/main/java/org/apache/commons/text/similarity/RegexTokenizer.java +++ b/src/main/java/org/apache/commons/text/similarity/RegexTokenizer.java @@ -32,7 +32,7 @@ import org.apache.commons.lang3.Validate; * * @since 1.0 */ -class RegexTokenizer implements Tokenizer<CharSequence> { +final class RegexTokenizer implements Tokenizer<CharSequence> { /** The whitespace pattern. */ private static final Pattern PATTERN = Pattern.compile("(\\w)+"); diff --git a/src/main/java/org/apache/commons/text/translate/AggregateTranslator.java b/src/main/java/org/apache/commons/text/translate/AggregateTranslator.java index 53d404f6..e13fa576 100644 --- a/src/main/java/org/apache/commons/text/translate/AggregateTranslator.java +++ b/src/main/java/org/apache/commons/text/translate/AggregateTranslator.java @@ -20,6 +20,8 @@ import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Stream; /** * Executes a sequence of translators one after the other. Execution ends whenever @@ -41,11 +43,7 @@ public class AggregateTranslator extends CharSequenceTranslator { */ public AggregateTranslator(final CharSequenceTranslator... translators) { if (translators != null) { - for (final CharSequenceTranslator translator : translators) { - if (translator != null) { - this.translators.add(translator); - } - } + Stream.of(translators).filter(Objects::nonNull).forEach(this.translators::add); } } diff --git a/src/main/java/org/apache/commons/text/translate/EntityArrays.java b/src/main/java/org/apache/commons/text/translate/EntityArrays.java index 73f9e473..6420af5b 100644 --- a/src/main/java/org/apache/commons/text/translate/EntityArrays.java +++ b/src/main/java/org/apache/commons/text/translate/EntityArrays.java @@ -19,6 +19,8 @@ package org.apache.commons.text.translate; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; /** * Class holding various entity data for HTML and XML - generally for use with @@ -442,11 +444,7 @@ public class EntityArrays { * @return Map<String, String> inverted array */ public static Map<CharSequence, CharSequence> invert(final Map<CharSequence, CharSequence> map) { - final Map<CharSequence, CharSequence> newMap = new HashMap<>(); - for (final Map.Entry<CharSequence, CharSequence> pair : map.entrySet()) { - newMap.put(pair.getValue(), pair.getKey()); - } - return newMap; + return map.entrySet().stream().collect(Collectors.toMap(Entry::getValue, Entry::getKey)); } }
