Hello Chen,

Thank you for clarifying the API surface concern. I agree that the bar for 
additions to Arrays should remain high.

The reason I still think this may be worth considering is that the repeated 
manual loop appears frequently for small unsorted primitive arrays, and a 
dedicated API would provide both readability and also a very clear optimization 
hook for future implementations, including vectorized fast paths where 
appropriate.

I don't want to unnecessarily expand Arrays, but I want to explore whether this 
specific operation is common and fundamental enough to justify a standard 
library entry point.

Markus’s earlier point about possible optimization opportunities for unsorted 
primitive arrays especially made me think more that this may be a direction 
that is worth validating a little more.

Would a prototype (for example starting with char[]) be useful for debating if 
the API bar could be met?

Regards,
Arnav

> On Apr 10, 2026, at 3:55 PM, Chen Liang <[email protected]> wrote:
> 
> 
> Hello all,
> I still don't think you should add these APIs.
> This linear search is easily written by users.
> As I said again, you shouldn't use a linear array for passing such data 
> around. This usually represents a failure in program structure design.
> Vectorization can be done with the Vector API.
> Arrays is not the home of a million garbage APIs. If everyone says "oh I have 
> a proposal" and add something, we can see this class blow up really quickly.
> So there is a bar for API additions.
> This "contains" proposal clearly doesn't meet that bar, as it can be replaced 
> by more high-level APIs like sort+binarySearch, or some sort of String KMP 
> algorithm applied onto arrays.
> 
> Regards,
> Chen Liang
> From: Arnav Somaghatta <[email protected]>
> Sent: Friday, April 10, 2026 5:45 AM
> To: Markus KARG <[email protected]>
> Cc: [email protected] <[email protected]>
> Subject: Re: [External] : Proposal for primitive arrays
>  
> Hello all,
> 
> Thank you all for the feedback so far, and Markus especially for the helpful 
> perspective on the potential optimization and vectorization opportunities for 
> unsorted primitive array searches.
> 
> I have now submitted my OCA form as well and waiting for it to get approved.
> 
> Based on the discussion so far, would it make sense for me to begin working 
> on an initial prototype patch (starting with the char[] overload and its 
> tests) so the API shape and implementation can be reviewed better?
> 
> And Markus, if this direction still seems aligned, would you be comfortable 
> acting as sponsor/reviewer for an initial contribution?
> 
> Regards,
> Arnav
> 
> > On Apr 6, 2026, at 6:00 AM, Markus KARG <[email protected]> wrote:
> >
> > Chen,
> >
> > how does this explain that the propopsal "is not good"?
> >
> > It is not on us to decide what others do with the tools we provide, as long 
> > as we DO provide them. IF people are using primitive arrays, and IF they 
> > need to search them in an UNSORTED fashion, Arnav's proposed API would 
> > allows us to apply vectorization. Hence, the result COULD be multiple times 
> > faster than custom search loops. As long as primitive arrays DO exist, I 
> > would rather say, his proposal "is good".
> >
> > -Markus
> >
> >
> >> Am 06.04.2026 um 02:40 schrieb Chen Liang:
> >> Hello, I don't think this is a good proposal.
> >> Nowadays, primitive arrays are used as an efficient storage format, much 
> >> more compact than reference arrays. However, they all suffer from the 
> >> mutability issue as all the arrays: when you pass arrays across trust 
> >> boundaries, you should always sanitize the input arrays and output arrays. 
> >> In this sanitization process, we usually can convert these arrays to more 
> >> efficient formats, such as performing a Arrays.sort call, and the 
> >> subsequent search can be a Arrays.binarySearch(a, key) >= 0 call.
> >>
> >> Regards,
> >> Chen Liang
> >> ________________________________
> >> From: Arnav Somaghatta <[email protected]>
> >> Sent: Sunday, April 5, 2026 9:58 AM
> >> To: [email protected] <[email protected]>
> >> Subject: [External] : Proposal for primitive arrays
> >>
> >> Hello,
> >> My name is Arnav, and I am a 14-year-old developer who is interested in 
> >> contributing to the OpenJDK. I would like to propose adding a set of 
> >> "contains" methods to the java.util.Arrays class.
> >> Currently, to check if a primitive array (like char or int) contains a 
> >> specific value needs a large manual for loop, converting to a List, or 
> >> using a very complicated Stream pipeline.
> >> My idea proposes adding a series of static "contains" methods for all 8 
> >> primitive types to java.util.Arrays
> >> public static boolean contains(char[] a, char key)
> >> public static boolean contains(int[] a, int key)
> >> public static boolean contains(byte[] a, byte key)
> >> public static boolean contains(short[] a, short key)
> >> public static boolean contains(long[] a, long key)
> >> public static boolean contains(float[] a, float key)
> >> public static boolean contains(double[] a, double key)
> >> public static boolean contains(boolean[] a, boolean key)
> >>
> >> Why should you consider this proposal?
> >> Arrays.contains(myChars, 'a') is much more readable than workarounds like 
> >> a for loop.
> >> For newer Java learners, not having a "contains" method on arrays is very 
> >> confusing when you compare it to other languages like Python.
> >>
> >> If this proposal is viewed favorably, I am willing to make all of the 8 
> >> primitive overloads and any of the corresponding unit tests. I am also 
> >> looking for a sponsor to help me navigate the OCA process for minors and 
> >> guide me through the technical process of pushing these changes.
> >> I look forward to your feedback on whether this is a direction the Core 
> >> Libs group would support. Thank you so much for considering my idea and 
> >> reading through this email, your support means a lot to me!
> >> Thank you,
> >> Arnav

Reply via email to