RFC: draft API for JEP 269 Convenience Collection Factories (original) (raw)

Stuart Marks stuart.marks at oracle.com
Wed Oct 14 04🔞21 UTC 2015


On 10/10/15 9:10 AM, Louis Wasserman wrote:

If you're asking about why we stopped where we did, we collected actually rather a lot of data on the size of static collection constants using immutable collections, both with builder syntax and without. https://github.com/google/guava/issues/2071#issuecomment-126468933 has the statistics (in terms of ratios, not absolute numbers), but we found that there was right about an exponential trend: static collection constants of size n+1 were ~half as common as collection constants of size n.

Hi Louis,

Yes, this is mainly the issue that I'm interested in. Thanks for the pointer to these statistics. It's interesting that there seems to be a steady dropoff. But that makes it hard to decide where to cut it off, as there's no obvious "knee" of the curve.

With a few elements, indeed it seems that the distribute drops off proportional to the power of 0.5, but it flattens out around considerably above 7. I'm not sure what this means. (I have a hunch this is related to Benford's Law [1] but this is only a hunch.)

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?

Recommendations welcome.

s'marks

[1] https://en.wikipedia.org/wiki/Benford's_law



More information about the core-libs-dev mailing list