public void shift(int base_position){
        int[] z = findZ(base_position);
        System.out.println(String.format("z1, z2:%3d, %3d", z[0], z[1]));
        System.out.println("Before shift:");this.print();

        // (z[0] , base_position-1] 区间全部左移
        for (int i = z[0]+1; i != base_position; ++i){
            if (mHistorgram.containsKey(i)){
                mHistorgram.put(i-1, mHistorgram.get(i));
            }
        }
        mHistorgram.put(base_position-1,0);

        // [ base_position+1 , z[1] ) 区间的全部右移
        for (int i = z[1]-1; i != base_position; --i){
            if (mHistorgram.containsKey(i)){
                mHistorgram.put(i+1, mHistorgram.get(i));
            }
        }
        mHistorgram.put(base_position+1,0);

        System.out.println("After  shift:");this.print();
    }