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