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)