ArrayList

// Resizable-array implementation of the List interface. 

public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, 
        java.io.Serializable

ArrayList

public boolean add(E e) {
    modCount++;
    add(e, elementData, size);
    return true;
}
private void add(E e, Object[] elementData, int s) {
    if (s == elementData.length)
        elementData = grow();
    elementData[s] = e;
    size = s + 1;
}

LinkedList

// Doubly-linked list implementation 
// of the List and Deque interfaces. 

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, 
        java.io.Serializable

LinkedList

private void linkFirst(E e) {
    final Node<E> f = first;
    final Node<E> newNode = new Node<>(null, e, f);
    first = newNode;
    if (f == null)
        last = newNode;
    else
        f.prev = newNode;
    size++;
    modCount++;
}

LinkedList

println(LinkedList<Int>()::class.supertypes)
[java.util.AbstractSequentialList<E!>, java.util.Deque<E!>, kotlin.Cloneable, java.io.Serializable, kotlin.collections.MutableList]

Изменяемые коллекции

val allStudent: List<Student> = LinkedList(students)

fun newStudent(student: Student) =
    (allStudent as MutableList).add(student) // unsafe !