List with object and index filtering out the object depends upon the index present at list
It seems to me that your solution is basically O(n*m),the size of the unfiltered list times the number of filter indexes.  I think you can get O(n+mlogm),the size of the unfiltered list plus sorting the filtered indexes, by using a combination of indexes and iterators and iterating through both lists at the same time.  It could look something like this:

public static List&lt;Test&gt; getFilteredList(Collection&lt;Test&gt; unfilteredList, List&lt;Integer&gt; filterIndexes) {
    if(filterIndexes == null || filterIndexes.size() == 0){
        return new ArrayList&lt;Test&gt;(unfilteredList);
    }
    Collections.sort(filterIndexes);        
    List&lt;Test&gt; newTestList = new ArrayList&lt;&gt;();
    Iterator uIterator = unfilteredList.iterator();
    Iterator fIterator = filterIndexes.iterator();
    Integer fIndex = (Integer)fIterator.next();
    for (Integer uIndex = 0;uIterator.hasNext();++uIndex) {
        Test nextTest = (Test)uIterator.next();
        if (uIndex == fIndex) {
            newTestList.add(nextTest);
            if(!fIterator.hasNext()){
               break;
            }else{
                fIndex = (Integer)fIterator.next();
                if(fIndex &gt;= unfilteredList.size()){
                    break;
                }
            }
        }
    }
    return newTestList;
}