You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2025/05/25 01:49:00 UTC
[jira] [Created] (GROOVY-11678) Create DGM#subList(IntRange) method
Paul King created GROOVY-11678:
----------------------------------
Summary: Create DGM#subList(IntRange) method
Key: GROOVY-11678
URL: https://issues.apache.org/jira/browse/GROOVY-11678
Project: Groovy
Issue Type: New Feature
Reporter: Paul King
Assignee: Paul King
We recently added some DGM variants on Lists which take an IntRange. Rather than keep adding such variants, it makes more sense to provide a subList method that takes a range.
{code:groovy}
def list = [1, 2, 3, 3, 4, 4, 5, 6, 7]
assert list.partitionPoint(0..<4) { it <= 20 } == 4 // alt1
assert list.subList(0..<4).partitionPoint { it <= 20 } == 4 // alt2
{code}
It would allow us to offer the second alternative instead of the first, potentially removing the need for one variant.
Another example:
{code:groovy}
def nums = [5, 9, 1, 7, 3, 4, 8, 6, 0, 2]
nums.sort(0..4) // alt1
nums.subList(0..4).sort() // alt2
assert nums == [1, 3, 5, 7, 9, 4, 8, 6, 0, 2]
{code}
The other mutating methods, e.g. {{shuffle}}, {{unique}}, {{clear}}, could also be used and we don't need more variants.
It would still make sense to keep some variants, e.g.:
{code:groovy}
assert nums.toSorted(0..4) == [1, 3, 5, 7, 9, 4, 8, 6, 0, 2]
{code}
Since we sort on the int range but return the whole list.
It may also make sense to keep variants where we want to offer the same functionality with index selection across more aggregates, e.g. lists and arrays.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)