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 ; }
Move an object in List up