Знаю, что нужно делать так, чтобы не возвращался изменяемый объект и не терялась инкапсуляция:
public class CubeWarehouse{
private Set<Cube> cubeSet = new HashSet<>;
public Set<Cube> getWareHouse(){
return Collections.unmodifiableSet(cubeSet);
}
}
А надо ли делать так, если мы возвращаем массив:
public Cube[] getArray(){
return Collections.unmodifiableSet(cubeSet).toArray(new Cube[0]);
}
Нет необходимости копировать Set во втором случае, т.к. toArray() также сделает копию.
В https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#toArray() сказано:
The caller is thus free to modify the returned array.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей