I wanted to know what changes should I be making to this code to reduce its execution time.
import java.util.*;
public class ExamPeekableQueueImpl <E extends Comparable<E>> implements ExamPeekableQueue<E> {
    LinkedList<E> li = new LinkedList<E>();
    public ExamPeekableQueueImpl(){
    }
    public void enqueue(E e){
        if(li.isEmpty()){
            li.add(0, e);
        }
        else
        li.add(e);
    }
    public E dequeue(){
        li.pollFirst();
        return null;
    }
    public void printlist(){
        System.out.println(li.toString());
    }
    public E peekMedian(){
        int var = (((li.size())/2)+1);
        Collections.sort(li);
        //Integer var2 = li.get(var);
        System.out.println("the median is:" + li.get(var-1));
        return null;
    }
    public E peekMaximum(){
        Collections.sort(li);
        System.out.println("the maximum is:" + li.getLast());
        return null;
    }
    public E peekMinimum(){
        Collections.sort(li);
        System.out.println("the minimum is:" + li.getFirst());
        return null;
    }
    public int size(){
        li.size();
        return 0;
    }   
}
Also I wanted to know is whether for implementing queues, LinkedList is faster or ArrayList or any other data structure.
 
     
     
     
     
     
     
    