Java - List (sequence)

1 - About

A list (also known as a sequence):

  • is ordered
  • allow duplicates (multiple null elements if they allow them)
  • is zero based. The first element is at the position 0.
  • can contain themselves as elements (but caution as the equals and hashCode methods are no longer well defined on such a list)

A special iterator, called a ListIterator, allows element insertion and replacement, and bidirectional access (from begin or from end) in addition to the normal operations.

3 - Interface and Implementation

List is an interface from the Java Collections Framework representing an ordered collection (also known as a sequence).

See List for all implementations. The most known is the ArrayList: a Resizable-array that permits all elements, including null.

4 - Management

4.1 - Instantiation

4.1.1 - From Array

From an array

List<Class> myList = new ArrayList<Class>();

// With String as Class
List<String> messages = new java.util.ArrayList(Arrays.asList("Nico", "Gerard"));

// The java.util.ArrayList transform the list implementation of the return list from Arrays.asList

See asList

  • As generic function

public static <T> List<T> asList(T... object) {

4.1.2 - New Operator

List<Class> myList = new ArrayList<Class>();

The ArrayList(int) constructor gives a List that has size 0. It only ensures that n elements can be added before it needs to reallocate the underlying array.

4.1.3 - From scalar


4.2 - Concatenation

List<String> list = new ArrayList<String>();

4.3 - Join

String join = String.join("joinSeparator", list);

  • With a stream: Example with columns, to create the first line of a csv

final String headers =

4.4 - Copy

The element are not copied.

List<String> copyList = new ArrayList<String>();

4.5 - Deep Copy

The element are also copied.

for(Object obj:list){

4.6 - Cast

  • cast of generic list with parameters. You can't cast a generic type of one parameter to another directly. However, since you can cast to and from wildcard types, you can cast through an intermediate wildcard type.

List<B> variable = (List<B>)(List<?>) collectionOfListA;

4.7 - Sort

  • Ascending order

foreignKeys =
// same as
foreignKeys =
                .sorted(Comparator.comparing(s -> (s.getForeignPrimaryKey().getTableDef().getName())))

  • Descending order

foreignKeys =
// same as
foreignKeys =
                .sorted(Comparator.comparing(s -> (s.getForeignPrimaryKey().getTableDef().getName())).reversed())

4.8 - Reverse

  • Stream

List<String> elements  =

  • Collections methods


4.9 - Stream to

4.9.1 - toList

  • List of object to a list of attribute

List<Person> persons = new ArrayList<>();
// ... add persons
List<String> names =
                .map(a -> a.getName())
// or 
//     .collect(Collectors.toList());

  • List of list to list

List<String> groups =

4.9.2 - toMap

  • from a list of object

List<Person> persons = new ArrayList<>();
// ... add persons
Map<Integer, CliWord> personsMap =
                .filter(p -> p.getNummer()!=null)
                .collect(Collectors.toMap(Person::getNummer, Function.identity()));

  • extends a list of string with attributes.

List<String> persons = new ArrayList<>();
Map<String, String> personsMap =
                s -> s, 
                s -> lookupFirstName(s)

  • groupBy

Map<String, List<Person>> groupedByName = persons

  • from a list of generic

Map<T, Double> buckets = genericList

4.9.3 - toArray

List to array

  • General construction

list.toArray(new Class[0])
// before version I don't know anymore
list.toArray(new Class[arraySize])

  • from a list of scalar

// For a list of string
list.toArray(new String[5])
// since opendJdk java 6 better not to pre-size
list.toArray(new String[0])

// Example
List<String> myList = new ArrayList<>();

String[] myArray = myList.toArray(new String[myList.size()])

  • from a list of object Object

// from Stream
final String[] nativeColumns = foreignKeyDef.getNativeColumns().stream()

4.9.4 - toGenericArray

// Based on
T[] arrayGeneric = (T[]) Array.newInstance(clazz,size)

// With Stream
T[] objects =
        .map(o -> Casts.cast(o, columnDef.getClazz()))
        .toArray((T[]) Array.newInstance(clazz,0));

4.9.5 - ToSet

mySet = new HashSet<>(list);

5 - Documentation / Reference

Data Science
Data Analysis
Data Science
Linear Algebra Mathematics

Powered by ComboStrap