code: public static <T, K> boolean moveUp(List<T> list, K key,
  			Function<T, K> keyMapper, int n) {
  		if (list == null)
  			return false;
  		ArrayList<T> newList = new ArrayList<T>();
  		boolean changed = false;
  		for (int i = 0; i < list.size(); i++) {
  			T item = list.get(i);
  
  			if (i > 0 && key.equals(keyMapper.apply(item))) {
  				int posi = i - n;
  				if (posi < 0)
  					posi = 0;
  				newList.add(posi, item);
  				changed = true;
  			} else
  				newList.add(item);
  		}
  
  		if (changed) {
  			list.clear();
  			list.addAll(newList);
  			return true;
  		}
  		return false;
  	}
docs: Move an object in List up
  
  @param list
  @param key
  @param keyMapper
  @return