Hi Philipp,

there is an issue with your proposal, with
  ArrayList<Integer> list = new ArrayList<>(1);
and
  ArrayList<Integer> list = new ArrayList<>(1, 2);

the first line will create an empty array list, the integer will be used to define the capacity of the list,
the second line will create a list with two values.

There is an open bug to add a bunch of static methods 'of' to do something similar to what you want,
  https://bugs.openjdk.java.net/browse/JDK-8026106
this is something that a lot of people will like to have and i hope that this can be integrated in 9.

cheers,
RĂ©mi

On 07/09/2015 05:55 PM, Philipp Bibik wrote:
Hi,

I'm Philipp Bibik and a 16 jear old free time developer.
I was born and live in Germany and have only an bad school english,
so sorry for any grammar and spelling mistakes.

I have an idea to improve the Java ArrayList API.
Lists are one of the most imported and used components in the Java API.
Although there are relay well designed, there was always something that annoyed me.

If you want to create an ArrayList with "String" as diamond operator and add the Strings
"1" to "5" to them, you need to do something like this:

    ArrayList<String> strings = new ArrayList<>();
    strings.add("1");
    strings.add("2");
    strings.add("3");
    strings.add("4");
    strings.add("5");

I added a few lines of code the the ArrayList class:

    /**
     * @param e array whose elements are to be placed into this list
     */
    @SafeVarargs
    public ArrayList(E... e) {
        elementData = e;
        size = elementData.length;
    }

After adding the lines above I was able to accomplish the same result
with 77 chars / 5 lines less code:

    ArrayList<String> strings = new ArrayList<>("1", "2", "3", "4", "5");

In my opinion adding a constructor like this to the "java.util.ArrayList" class and all other (at least some) classes, implementing the "java.util.List" interface
would be a big improvement to Java SE9.

Thanks for reading,

- Philipp Bibik.

Reply via email to