ArrayList<Integer> currentList = new ArrayList<Integer>() {{
add(i);
}};
создает новый экземпляр анонимного класса каждый раз в вашем цикле, это не переопределение или перезагрузка класса каждый раз Класс определяется один раз (во время компиляции) и загружается один раз (во время выполнения).
Нет значительного снижения производительности при использовании анонимных классов.