RFC: draft API for JEP 269 Convenience Collection Factories
Remi Forax
forax at univ-mlv.fr
Thu Oct 15 14:46:09 UTC 2015
Hi Stephen,
you can use Arrays.setAll() which do something similar.
The code seems really simple,
public static <T> List of(int size, IntFunction<T> valueFunction) {
T[] array = (T[])new Object[size];
Arrays.setAll(array, valueFunction);
return List.of(array);
}
or I miss something ?
Rémi
----- Mail original -----
> De: "Stephen Colebourne" <scolebourne at joda.org>
> À: "core-libs-dev" <core-libs-dev at openjdk.java.net>
> Envoyé: Jeudi 15 Octobre 2015 16:28:00
> Objet: Re: RFC: draft API for JEP 269 Convenience Collection Factories
>
> I've been working on a Java 8 wrapper class around double[] in my day
> job, and added the following factory method:
>
> /**
> * Obtains an instance with entries filled using a function.
> * <p>
> * The function is passed the array index and returns the value for
> that index.
> *
> * @param size the number of elements
> * @param valueFunction the function used to populate the value
> * @return an array initialized using the function
> */
> public static DoubleMatrix1D of(int size, IntToDoubleFunction
> valueFunction) {
> if (size == 0) {
> return EMPTY;
> }
> double[] array = new double[size];
> for (int i = 0; i < array.length; i++) {
> array[i] = valueFunction.applyAsDouble(i);
> }
> return new DoubleMatrix1D(array);
> }
>
> View on GitHub here:
> https://github.com/OpenGamma/Strata/commit/63e73652194a3dd94e37fbc407f4933c10abadda#diff-2a9787868cf0654b4a6a07e75c1a6286R199
>
> It occurs to me that it would be a *very* good idea to add a similar
> method to List.
>
> public static <T> List of(int size, IntFunction<T> valueFunction) { ... }
>
> Stephen
>
>
>
> On 14 October 2015 at 11:39, Stephen Colebourne <scolebourne at joda.org> wrote:
> > On 14 October 2015 at 10:38, Paul Sandoz <paul.sandoz at oracle.com> wrote:
> >>> On 14 Oct 2015, at 06:18, Stuart Marks <stuart.marks at oracle.com> wrote:
> >>> I'm not entirely sure what to take from this. If it were clearly
> >>> exponential, we could say with confidence that above a certain threshold
> >>> there would be vanishingly little benefit adding more arguments. But
> >>> since the curve seems to flatten out, maybe this is pushing us to add
> >>> more pairs than we had originally thought. The current draft API has 8
> >>> pairs; that seems to leave a few percent of cases on the table.
> >>> Obviously we can't get to 100%, but is 97% good enough?
> >
> > I'd say 5 is definitely too little, without an easy builder fallback
> > (as Guava provides). I'd say the right number is between 8 and 10.
> >
> > Stephen
>
More information about the core-libs-dev
mailing list