How to initialize a list of short elements in one line?
Something like this:
List<Short> numbers = new ArrayList<Short>(List.of(1, 2, 3, 4, 5));
But I am getting:
"Cannot resolve constructor 'ArrayList(java.util.List<E>)'"
How to initialize a list of short elements in one line?
Something like this:
List<Short> numbers = new ArrayList<Short>(List.of(1, 2, 3, 4, 5));
But I am getting:
"Cannot resolve constructor 'ArrayList(java.util.List<E>)'"
 
    
     
    
    The type ArrayList is declared as:
public class ArrayList<E> ... {
    public ArrayList(Collection<? extends E> c) { ... }
}
That means in your statement
List<Short> numbers = new ArrayList<>( ... );
the argument that you pass into the constructor must be of type Collection<? extends Short>. But you are passing a
List.of(1, 2, 3, 4, 5)
which is of type List<Integer>. Note that integral literals are int by default. Unfortunately, there is no short way to make them short. But you can always cast them:
List<Short> numbers = new ArrayList<>(List.of((short) 1, (short) 2, (short) 3, (short) 4, (short) 5));
This compiles fine.
Side note: Why do you need to create another list object (new ArrayList(...)) while already having one (List.of(...))?
 
    
    Use Integer.shortValue() method: Like below
  List<Short> numbers = Stream.of(1, 2, 3, 4, 5).map(value -> value.shortValue()).collect(Collectors.toList());
