Differences between List.of and Arrays.asList in Java

Four main differences between List.of method, added in Java 9, and old one Arrays.asList 
31 October 2017   1234

In Java 9, there is new Collection Factory methods, called List.of:

List<String> strings = List.of("first", "second");

Let's figure out what's the difference between the previous and the new options.

There are 4 main differences:

Arrays.asList returns a mutable list while the list returned by List.of is immutable:

List<Integer> list = Arrays.asList(1, 2, null);
list.set(1, 10); // OK

List<Integer> list = List.of(1, 2, 3);
list.set(1, 10); // Fails

Arrays.asList allows null elements while List.of doesn't:

List<Integer> list = Arrays.asList(1, 2, null); // OK
List<Integer> list = List.of(1, 2, null); // Fails with a NullPointerException

contains method behaves differently with nulls:

List<Integer> list = Arrays.asList(1, 2, 3);
list.contains(null); // Return false

List<Integer> list = List.of(1, 2, 3);
list.contains(null); // Throws NullPointerException

Arrays.asList returns a view of the passed array, so the changes to the array will be reflected in the list too. For List.of this is not true:

Integer[] array = {1,2,3};
List<Integer> list = Arrays.asList(array);
array[1] = 10;
System.out.println(list); // Prints [1, 10, 3]

Integer[] array = {1,2,3};
List<Integer> list = List.of(array);
array[1] = 10;
System.out.println(list); // Prints [1, 2, 3]    

 

What's new in IntelliJ IDEA 2018.2?

New version of popular IDE improved Spring and Spring Boot support
18 July 2018   110

The new version of IDE IntelliJ IDEA from JetBrains under the number 2018.2 has introduced several functions for developers using Spring and Spring Boot frameworks. Among the innovations: support for Spring Integration, runtime diagrams, library bin management and many minor fixes and improvements.

New features of IntelliJ IDEA

Now you can visualize the components in the system using the new Spring Integration diagram. All versions above 5.0 are supported.

Spring Integratio Diagram
Spring Integration Diagram

It shows all the gateways, channels and bridges of the application, regardless of whether they are configured using Java or XML annotations.

The IDE also received code completion and navigation for such integration annotations as @BridgeTo/From and @EnablePublisher:

Integration Annotations
Integration Annotations

In the new version of IntelliJ IDEA, you can view the dependencies during the execution of the Spring Boot application as a diagram through the control panel. To do this, go to the "Endpoints" section and enable the "Diagram Mode" function:

Runtime Dependencies
Runtime Dependencies

If there are too many beans in the project, the non-user codes can be disabled using the new "Show / Hide Library Beans" switch:

Show / Hide library beans
Show / Hide library beans

In addition, in 2018.2, you can start, modify, and test the display of HTTP requests in the "Endpoints" tab:

HTTP request
HTTP request

A complete list of improvements and changes is available in the technical update document. According to the developers, a lot of work has been done to improve performance in large projects.