[
https://issues.apache.org/jira/browse/GROOVY-10879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17649977#comment-17649977
]
ASF GitHub Bot commented on GROOVY-10879:
-----------------------------------------
paulk-asert commented on PR #1834:
URL: https://github.com/apache/groovy/pull/1834#issuecomment-1360225048
There are 24 methods but it is basically:
4 types: Iterators, Iterables, arrays and Maps BY
2 options: supplied collector or new map BY
3 scenarios: change key and value, change key, change value
```
collectEntries(Iterator<E> self, Map<K, V> collector, Function<? super E, K>
keyTransform, Function<? super E, V> valueTransform)
collectEntries(Iterator<E> self, Function<? super E, K> keyTransform,
Function<? super E, V> valueTransform)
collectEntries(Iterable<E> self, Map<K, V> collector, Function<? super E, K>
keyTransform, Function<? super E, V> valueTransform)
collectEntries(Iterable<E> self, Function<? super E, K> keyTransform,
Function<? super E, V> valueTransform)
collectEntries(E[] self, Map<K, V> collector, Function<? super E, K>
keyTransform, Function<? super E, V> valueTransform)
collectEntries(E[] self, Function<? super E, K> keyTransform, Function<?
super E, V> valueTransform)
collectEntries(Map<X, Y> self, Map<K, V> collector, Function<? super X, K>
keyTransform, Function<? super Y, V> valueTransform)
collectEntries(Map<X, Y> self, Function<? super X, K> keyTransform,
Function<? super Y, V> valueTransform)
withCollectedValues(Iterator<K> keys, Map<K, V> collector, Function<? super
K, V> valueTransform)
withCollectedValues(Iterator<K> keys, Function<? super K, V> valueTransform)
withCollectedValues(Iterable<K> keys, Map<K, V> collector, Function<? super
K, V> valueTransform)
withCollectedValues(Iterable<K> keys, Function<? super K, V> valueTransform)
withCollectedValues(K[] keys, Map<K, V> collector, Function<? super K, V>
valueTransform)
withCollectedValues(K[] keys, Function<? super K, V> valueTransform)
collectValues(Map<K, V> keys, Map<K, V> collector, Function<? super V, V>
valueTransform)
collectValues(Map<K, V> keys, Function<? super V, V> valueTransform)
withCollectedKeys(Iterator<V> values, Map<K, V> collector, Function<? super
V, K> keyTransform)
withCollectedKeys(Iterator<V> values, Function<? super V, K> keyTransform)
withCollectedKeys(Iterable<V> values, Map<K, V> collector, Function<? super
V, K> keyTransform)
withCollectedKeys(Iterable<V> values, Function<? super V, K> keyTransform)
withCollectedKeys(V[] values, Map<K, V> collector, Function<? super V, K>
keyTransform)
withCollectedKeys(V[] values, Function<? super V, K> keyTransform)
collectKeys(Map<K, V> keys, Map<K, V> collector, Function<? super K, K>
keyTransform)
collectKeys(Map<K, V> keys, Function<? super K, K> keyTransform)
```
> Potential additional DGM collectEntries variants
> ------------------------------------------------
>
> Key: GROOVY-10879
> URL: https://issues.apache.org/jira/browse/GROOVY-10879
> Project: Groovy
> Issue Type: Improvement
> Reporter: Paul King
> Assignee: Paul King
> Priority: Major
>
> As discussed in the mailing list:
> https://lists.apache.org/thread/7rd6wdblnh7bmdf6socjnbf21crg37g0
> Existing variants:
> {code}
> var languages = ['Kotlin', 'Groovy', 'Java', 'Clojure']
> assert languages.collectEntries{ [it.toLowerCase(), it.size()] } ==
> [kotlin:6, groovy:6, java:4, clojure:7]
> assert languages.collectEntries{ [it.toLowerCase(), it] } ==
> [kotlin:'Kotlin', groovy:'Groovy', java:'Java', clojure:'Clojure']
> assert languages.collectEntries(Scala:5){ [it, it.size()] } ==
> [Scala:5, Kotlin:6, Groovy:6, Java:4, Clojure:7]
> {code}
> Proposed new variants:
> {code}
> assert languages.collectEntries(String::toLowerCase, String::size) ==
> [kotlin:6, groovy:6, java:4, clojure:7]
> assert languages.withCollectedKeys(String::toLowerCase) == [kotlin:'Kotlin',
> groovy:'Groovy', java:'Java', clojure:'Clojure']
> assert languages.withCollectedValues([Scala:5], String::size) == [Scala:5,
> Kotlin:6, Groovy:6, Java:4, Clojure:7]
> def squared = e -> e ** 2
> assert [Scala:5, Kotlin:6, Groovy:6, Java:4,
> Clojure:7].collectEntries(String::toLowerCase, squared) ==
> [scala:25, kotlin:36, groovy:36, java:16, clojure:49]
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)