private void siftDown(){
        int k = 0;
        int l = 2 * k + 1;
        while(l < items.size()){
            int max = l, r = l + 1;
            if(r < items.size()){ // There is a right child
                if(items.get(r).compareTo(items.get(l)) > 0){
                    max++;
                }
            }

            if(items.get(r).compareTo(items.get(l)) < 0){
                //Switch
                T temp = items.get(k);
                items.set(k, items.get(max));
                items.set(max, temp);
                k = max;
                l = 2 * k + 1;
            }else{
                break;
            }
        }
    }