DDDEN!SSS, хэш нужен для того, чтобы быстро сравнить два объекта, не проверяя их сходство досконально. Он вычисляется на основе данных об объекте и индивидуален для каждого объекта с разными параметрами. Хэш-таблица нужна, если хранится набор объектов с определенными ключами, и их нужно по этим ключам оперативно вытаскивать. Пример - телефонная книга: номер - объект, а имя - ключ.
Malcolm, допустим у меня в вектор будят добавляться Integer, можно с помощью хеш проверить есть ли в векторе такое-то число? Или лучше boolean contains(Object elem). Я боюсь, что boolean contains(Object elem) будет искать именно объект Integer, а не число. Или он определит естьли там данное число?
DDDEN!SSS, все Integer с одинаковым число выдают одинаковый хэш, так что если ты добавил Integer с определенным числом в Vector, то при поиске ты его сможешь найти.
DDDEN!SSS, да не надо вызывать метод вычисления кэша, все делается автоматически. Например, вот этот метод возвратит true, если есть число 6: vector.contains(new Integer(6)). Создается новый объект Integer, который выдает тот же хэш, что и искомый, и по нему проверяется на наличие нужный объект. Конечно, лучше бы обойтись без создания нового объекта, но так не получается.
DDDEN!SSS, если очень критична скорость, то обычно советуют с Vector"ами не вязаться вообще. Но ты посмотри, может быть, у тебя где-то еще скорость теряется значительно сильнее, и используется ли Vector или нет, нет никакой разницы. Всегда стоит проверять, а уже только потом оптимизировать. Оптимизация же тоже идет за счет читаемости кода, например, и не только.
Malcolm, скорости у меня еще пока что негде теряться, фпс 95-102:-D. Я думаю поделить игровое поле на сектора и в начале определить к каким секторам какие линии относятся. А в самой игре определять какие сектора видны. И из видимых секторов добавлять номера линий в вектор, НО т.к. одна линия может принадлежать нескольким секторам, то надо определять не добавилась ли уже линия в вектор.
Вот нарисовал-upwap.ru/337833 . Видны 4 сектора, а линия одна. Поэтому при добавления линий с сектора надо проверять не добавлялись уже эти линии. Только сначалобы научится определять принодлежность линии сектору. Для этого надо проверить не лежитли какойто конец отрезка в секторе и проверить пересечение отрезка со сторонами сектора. Первое легко, а второе вроде нашол algolist.manual.ru/maths/geom/intersect/lineline2d.php но надо на джаву перевести.
DDDEN!SSS, вот ты задолбал, иди кури доки! И сам учись думать и эксперементировать! А не надоедать однообразными вопросами, а так как серавно в форуме супер ответ не получишь! Имхо!
28 фев 2009 в 20:30
Хэш-таблица нужна, если хранится набор объектов с определенными ключами, и их нужно по этим ключам оперативно вытаскивать. Пример - телефонная книга: номер - объект, а имя - ключ.