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