Инкапсуляция (Коллекции, массивы)

236
09 мая 2018, 05:20

Знаю, что нужно делать так, чтобы не возвращался изменяемый объект и не терялась инкапсуляция:

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]);
}
Answer 1

Нет необходимости копировать 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.

READ ALSO
Алгоритм быстрой вставки и поиска по индексу

Алгоритм быстрой вставки и поиска по индексу

Ищу алгоритм вставки и поиска по индексу работающий за O(1), есть ли готовые реализации на java? Если готовых реализаций нет, то можно просто название...

193
Как тестировать BroadcastReceiver?

Как тестировать BroadcastReceiver?

Есть broadcast receiver отвечающий за включение/выключение блютузаКак для него написать тест ?И какие можно для него написать тесты Вот и сам receiver

262
Java замена символов в файле

Java замена символов в файле

Как в Jave заменить символ в файле (файлах)? Например, запятую на символ |?

256
Картина в jar файле

Картина в jar файле

Как правильно добавить картинку в проект javaПри отладке картинка отображается, но после сборки проекта в jar, картинки нет

205