Давайте вспомним несколько коллекций, предоставляемых стандартной библиотекой Java (версий 1.0 и 1.1); BitSet
не рассматривается здесь, так как представляет собой специализированную коллекцию:
(1) Массив хранит цифровые индексы объектов. Он может содержать объекты одного типа, поэтому при поиске объекта преобразование результата не требуется. Массив может быть многомерным и содержать примитивные типы данных. Однако после создания его размер нельзя изменять.
(2) Коллекция Vector
также хранит цифровые индексы объектов — массив и Vector
можно представить как случайные доступные множества. При добавлении новых элементов Vector
автоматически изменяет свой размер. Но Vector
может содержать только ссылки на объекты, поэтому он не может содержать примитивные типы данных; кроме того, при извлечении объекта из коллекции результат требует преобразования.
(3) Hashtable
, являющаяся типом Dictionary
, представляет способ связывания объектов с другими объектами. Hashtable
также поддерживает случайный доступ к объектам, фактически её дизайн направлен на обеспечение высокой скорости доступа.
(4) Stack
представляет последовательность "последний вошёл — первый вышел" (LIFO).Если вы знакомы с теорией структур данных, возможно, вас удивляет отсутствие более широкого набора коллекций. Из практической точки зрения, достаточно ли этого набора? Для Hashtable
можно хранить любые данные и быстро их извлекать; для Enumeration
можно проходить через последовательность и выполнять определённые действия над каждым элементом. Это мощный набор инструментов.Однако Hashtable
не имеет понятия "порядка". Vector
и массив предоставляют линейный порядок, но если нужно вставить элемент в середину любого из них, это обычно требует значительных затрат. Кроме того, очереди, деки, приоритетные очереди и деревья связаны с "сортировкой" элементов — не просто помещением их таким образом, чтобы они могли быть найдены или перемещены в линейном порядке позже. Эти структуры данных также очень полезны, именно поэтому они включены в стандарт C++. Исходя из этого, следует рассматривать коллекции стандартной библиотеки Java как отправную точку. В случае необходимости использования Java версий 1.0 или 1.1, когда требуется превзойти возможности этих версий, можно использовать JGL. Если можно использовать Java 1.2, то следует воспользоваться только новыми коллекциями, так как они обычно удовлетворяют все наши потребности. Обратите внимание, что в этой книге большое внимание уделено Java 1.1, поэтому многие коллекции, используемые в ней, доступны только в Java 1.1: Vector
и Hashtable
. В настоящее время это вынужденная мера. Однако такой подход также обеспечивает лучшую обратную совместимость со старым кодом на Java. При написании нового кода на Java 1.2 новые коллекции зачастую будут служить вам более эффективно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )