Arrays methods

Remi Forax forax at univ-mlv.fr
Thu Mar 14 14:59:07 PDT 2013


On 03/14/2013 10:54 PM, Brian Goetz wrote:
> Here's what these would look like:
>
> New SAMS: {Int,Long,Double}To{Int,Long,Double}Function
>
> New Arrays methods:

and with the wildcards:

>
>     /**
>      * Initialize all elements of the specified array, using the 
> provided generator function to compute each element.
>      * @param array Array to be initialized
>      * @param generator Function accepting an index and producing the 
> desired value for that position
>      * @param <T> Type of elements of the array
>      */
>     public<T> void setAll(T[] array, IntFunction<? extends T> 
> generator) {
>         Streams.intRange(0, array.length).forEach(i -> { array[i] = 
> generator.apply(i); });
>     }
>
>     /**
>      * Initialize all elements of the specified array, in parallel, 
> using the provided generator function to
>      * compute each element.
>      * @param array Array to be initialized
>      * @param generator Function accepting an index and producing the 
> desired value for that position
>      * @param <T> Type of elements of the array
>      */
>     public<T> void parallelSetAll(T[] array, IntFunction<? extends T> 
> generator) {
>         Streams.intRange(0, array.length).parallel().forEach(i -> { 
> array[i] = generator.apply(i); });
>     }

Rémi

>
> On 3/14/2013 12:26 PM, Brian Goetz wrote:
>> Next roadblock: no suitable SAMs for int -> long, int -> double.
>>
>> Add?
>>
>> On 3/13/2013 6:39 PM, Mike Duigou wrote:
>>> Yes
>>>
>>>
>>>
>>> On 2013-03-13, at 14:44, Brian Goetz <brian.goetz at oracle.com> wrote:
>>>
>>>> Fill implies "set all elements"; a set name would probably have to
>>>> say "setAll":
>>>>
>>>>   Arrays.setAll(array, fn)
>>>>   Arrays.parallelSetAll(array, fn)
>>>>
>>>> OK?
>>>>
>>>> On 3/13/2013 5:30 PM, Joe Bowbeer wrote:
>>>>> I agree with the critique of 'fill' names.
>>>>>
>>>>> I like 'set' names.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Mar 13, 2013 at 1:28 PM, Mike Duigou <mike.duigou at oracle.com
>>>>> <mailto:mike.duigou at oracle.com>> wrote:
>>>>>
>>>>>     Arrays.indexFill(array, fn)
>>>>>     Arrays.indexedFill(array, fn)
>>>>>     Arrays.fillIndexed(array, fn)
>>>>>     Arrays.indexedSet(array, fn)
>>>>>
>>>>>     I think it might be better to stay away from "fill" names because
>>>>>     the current fill methods all have the property that every array
>>>>>     element is assigned the same value. This new operation allows a
>>>>>     different value to be assigned to each element.
>>>>>
>>>>>     Mike
>>>>>
>>>>>     On Mar 13 2013, at 12:25 , Brian Goetz wrote:
>>>>>
>>>>>      >> If we added
>>>>>      >>
>>>>>      >>      <T> void fill(T[], IntFunction<T> gen)
>>>>>      >>
>>>>>      >> then existing calls to
>>>>>      >>
>>>>>      >>   fill(array, null)
>>>>>      >>
>>>>>      >> would become ambiguous.  Doh.  (But the other 17 forms are 
>>>>> not
>>>>>      >> problematic.)
>>>>>      >>
>>>>>      >> Any suggestions for alternate names?
>>>>>      >
>>>>>      > Arrays.generate(array, fn)
>>>>>      > Arrays.fillApplying(array, fn)
>>>>>      > Arrays.initialize(array, fn)
>>>>>      > Arrays.setAll(array, fn)
>>>>>      >
>>>>>      > ...
>>>>>
>>>>>



More information about the lambda-libs-spec-experts mailing list