Вроде бы все работает правильно. Если в листе еще остался элементы которые не проходили проверку мы же добавляем все в конец правильно или нет?
if(list.size() > 0)
    for (String s : list)
        first += " " + s;