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)

Reply via email to