javap java.util.LinkedList
Compiled from "LinkedList.java"
public class java.util.LinkedList extends java.util.AbstractSequentialList implements java.util.List, java.util.Deque, java.lang.Cloneable, java.io.Serializable {
you can see here that LinkedList extends AbstractSequentialList and implements a list interface, adds and removes methods from this interface, you can check it with the following command
javap java.util.List
Compiled from "List.java"
open interface java.util.List extends java.util.Collection {
public abstract int size ();
public abstract boolean isEmpty ();
public abstract boolean contains (java.lang.Object);
public abstract java.util.Iterator iterator ();
public abstract java.lang.Object [] toArray ();
public annotation T [] toArray (T []);
public abstract boolean add (E);
public abstract boolean remove (java.lang.Object);
public abstract boolean containsAll (java.util.Collection);
public abstract boolean addAll (java.util.Collection);
public abstract boolean addAll (int, java.util.Collection);
public abstract boolean removeAll (java.util.Collection);
public abstract boolean retainAll (java.util.Collection);
public void replaceAll (java.util.function.UnaryOperator);
public void sort (java.util.Comparator);
public abstract void clear ();
public abstract boolean equals (java.lang.Object);
public abstract int hashCode ();
public abstract E get (int);
public abstract E set (int, E);
public abstract void add (int, E);
public annotation E remove (int);
public abstract int indexOf (java.lang.Object);
public abstract int lastIndexOf (java.lang.Object);
public abstract java.util.ListIterator listIterator ();
public abstract java.util.ListIterator listIterator (int);
public abstract java.util.List subList (int, int);
public java.util.Spliterator spliterator ();
}
in fact, the add and addLast method does the same, but because of the above reason. He has both methods.
I think I gave an answer. feel free to comment ...