[Java] вопрос по языку
Че-то типа return array.clone или как оно там называеццо. Иначе никак, афаик.
Запихни это всё в ArrayList )
А че, типа, поможет?
1. Если просто не хочешь, чтобы изменились данные, то создавай новый массив и его передавай
2. Как вариант, запихнуть значения в Double, а потом их - в ArrayList. Уже Double никто поменять не сможет.
3. Тоже, что и в пункте 2, плюс сделать Collections.unmodifiableList(ArrayList) и отдать результат - теперь его, точно, никто не поменяет%) (так как во втором варианте значение можно было заместить)
Пасибо бальшое
Ботаешь?
Уже Double никто поменять не сможетчего-о?
double[] getArray;
сделать
int getArraySize;
double getArrayItem(int i);
тоже иногда вариант
просто создавать каждый раз новый объект неизменяемого списка не всегда хорошо
А что, сможешь у Double найти set-метод? %
так как во втором варианте значение можно было заместить
все равно катит тока третий вариант
Имхо, это самый лучший вариант в большинстве случаев, но просто он просил вернуть массив
А мне больше понравился вариант с array.clone
тогда можно попробывать реализовать в самом классе интерфейс List или закэшировать врапер
У меня вот сейчас схожая проблема:
Есть SynchronizedHashMap - нужно пробежаться по её значениям и отобрать те из них, которые удовлетворяют критерию.
Проблема в том, что в это время в этой Мар'е могут меняться и ключи, и значения (либо явно другим потоком, либо самой JVM).
Как быть? Очевидное решение synchronized(SynchronizedHashMap){...} не предлагать - не подходит
Iterator keys=cache.keySet.iterator;
Но если набор ключей изменится, то я боюсь, что итератор кинет исключение одновременной модификации
Есть ещё варианты быстрого перебора ключей?
см. java.util.concurrent.ConcurrentHashMap
в 1.4.2 такого нет
Мне нельзя - я сертификацию пишу
А там можно использовать только ждк, со дня официального релиза которого прошло более 18 месяцев...
клонировать и просмотреть keySet
Оставить комментарий
Sanjaz
Вопрос: как сделать так, чтоб метод getArray возвращал констанный массив? Т.е. элементы массива нельзя было бы изменять.