JEP 186: Collection Literals
Nick Williams
nicholas+openjdk at nicholaswilliams.net
Tue Jan 14 08:33:00 PST 2014
I think we should also try to keep the Java Unified Expression Language in mind while designing this. Java EE 7 added lambda expressions to JUEL. Can you imagine how confusing it would have been if they had defined a different lambda syntax than Java 8? They didn't, though. They made the syntax mirror Java 8 lambdas.
JUEL also has collection literals now, and I think it would be foolish to define a literal syntax different than that defined in JUEL. It will make developers' lives more difficult. The JUEL syntax is simple and I think it would work perfectly in Java as well:
List: [ 1, 2, 3 ]
Set: { 1, 2, 3 }
Map: { "one" : 1, "two" : 2, "three" : 3 }
If we, for example, make Lists use curly braces in Java when they already use square brackets in JUEL, that would be unfortunate.
Nick
On Jan 14, 2014, at 10:19 AM, Paul Benedict wrote:
> I think you could likely achieve all those with curly braces. You'll have
> the help of type inference during assignment (list vs set) plus you can
> nest values whenever you need tuples (maps).
>
>
> On Tue, Jan 14, 2014 at 10:16 AM, Artur Biesiadowski <abies at adres.pl> wrote:
>
>> Problem is that you need to differentiate list and set (and map possibly).
>>
>> Few examples from existing languages
>>
>> Groovy:
>>
>> List [1,2,3]
>> Set [1,2,3] as Set
>> Map ["a":1, "b":2]
>>
>> Xtend
>>
>> List #[1,2,3]
>> Set #{1,2,3}
>> Map #{"a"->1, "b"->2}
>>
>> Scala
>>
>> List Array(1,2,3)
>> Set Set(1,2,3)
>> Map Map("a"->1, "b"->2)
>>
>> C#
>>
>> List new List<int> {1,2,3}
>> Set new HashSet<int> {1,2,3}
>> Map new Dictionary<string,int> { {"a":1},{"b":2} }
>>
>>
>>
>> Regards,
>> Artur Biesiadowski
>>
>> On 14/01/2014 16:30, Paul Benedict wrote:
>>> I would like to see Java have one way of doing initialization with a
>> series
>>> of values. C11/C++11 decided that curly braces was the way to go. So I
>>> would agree with Moshe we should favor curly braces over any new syntax.
>>>
>>>
>>> On Tue, Jan 14, 2014 at 8:34 AM, Millies, Sebastian <
>>> Sebastian.Millies at softwareag.com> wrote:
>>>
>>>> I would certainly expect it to be an immutable list, and I believe the
>>>> proposal of having collection literals makes most sense in the context
>> of
>>>> persistent collections. This would be in keeping with evolving Java
>> towards
>>>> a more functional and parallel-friendly programming style, which entails
>>>> embracing immutability. In contrast, what's to be gained from a shorter
>>>> version of Arrays.asList() ? -- Sebastian
>>>>
>>>> -----Original Message-----
>>>> From: lambda-dev-bounces at openjdk.java.net [mailto:
>>>> lambda-dev-bounces at openjdk.java.net] On Behalf Of Moshe Sayag
>>>> Sent: Tuesday, January 14, 2014 2:52 PM
>>>> To: lambda-dev at openjdk.java.net
>>>> Subject: Re: JEP 186: Collection Literals
>>>>
>>>> 1. What is the exact meaning of:
>>>>
>>>> List<Integer> list = #[ 1, 2, 3 ];
>>>>
>>>> Will 'list' be an ArrayList, a LinkedList or an immutable list?
>>>>
>>>> 2. Java already has the curly brackets {...} to construct an array.
>>>>
>>>> int[] array = { 1, 2, 3 };
>>>>
>>>> How will the new literal go with it?
>>>> Will we have:
>>>>
>>>> int[] array = #[ 1, 2, 3 ];
>>>>
>>>> What about
>>>>
>>>> List<Integer> list = { 1, 2, 3 };
>>>>
>>>>
>>>> Moshe
>>>>
>>>>
>>>> On Tue, Jan 14, 2014 at 2:17 AM, <mark.reinhold at oracle.com> wrote:
>>>>
>>>>> Posted: http://openjdk.java.net/jeps/186
>>>>>
>>>>> - Mark
>>>>>
>>>>>
>>>>
>>>> Software AG – Sitz/Registered office: Uhlandstraße 12, 64297 Darmstadt,
>>>> Germany – Registergericht/Commercial register: Darmstadt HRB 1562 -
>>>> Vorstand/Management Board: Karl-Heinz Streibich (Vorsitzender/Chairman),
>>>> Dr. Wolfram Jost, Arnd Zinnhardt; - Aufsichtsratsvorsitzender/Chairman
>> of
>>>> the Supervisory Board: Dr. Andreas Bereczky - http://www.softwareag.com
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>
>
> --
> Cheers,
> Paul
>
More information about the lambda-dev
mailing list