powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Массивы
11 сообщений из 36, страница 2 из 2
Массивы
    #33286338
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

в хаше хранится пара ключ-значение - вы кладёте в хаш определённый объект (тот-же массив) с ключём "Петя", а потом по этому ключу можете получить его обратно... правда вот если у вас повторяющиеся названия то я мало-мало глупость предложил
...
Рейтинг: 0 / 0
Массивы
    #33286361
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thinking in Java
Функциональность Map
ArrayList позволяет вам выбирать из последовательности объектов, используя номер, другими словами, он ассоциирует номера с объектами. Но что, если вы хотите выбирать из последовательности объектов, используя какой-то другой критерий? Например, стек: его критерием выбора является “последняя вещь, втолкнутая в стек”. Мощными поворотными моментами этой идеи “выборки из последовательности” поочередно стали карта (map), словарь (dictionary) или ассоциативный массив (associative array). Концептуально они выглядят как ArrayList, но вместо поиска объектов по номерам вы ищете их, используя другой объект. Часто это является ключевым процессом в программе.

Эта концепция показана в Java как интерфейс Map. Метод put(Object key, Object value) добавляет значение (то, что вы хотите) и ассоциирует с ним ключ (то, по чем вы будете искать). get(Object key) производит значение по соответствующему ключу. Вы также можете проверить Map, узнав, содержится ли там ключ или значение с помощью containsKey( ) и containsValue( ).

Стандартная библиотека Java содержит два различных типа Map: HashMap и TreeMap. Оба они имеют один и тот же интерфейс (так как они оба реализуют Map), но они отличаются одним способом: эффективностью. Если вы думаете, что это должно выполнятся с помощью get( ), это выглядит приятно медленным, например, при поиске в ArrayList, содержащем ключи. HashMap - достаточно скоростной контейнер. Вместо медленного поиска ключа, он использует специальное значение, называемое хеш-код. Хэш-код - это способ получения определенной информации об объекте путем опроса и включения “относительно уникального” int для этого объекта. Все Java объекты могут производить хеш-код, а метод hashCode( ) - это метод корневого класса Object. HashMap берет hashCode( ) объекта и использует его для быстрого вылавливания ключа. В результате получаем ощутимое прибавление производительности [50].

В качестве использования HashMap, рассмотрим программу для проверки случайности метода Java Math.random( ). В идеале, он должен производить равномерно распределенные случайные числа, но для проверки этого вам необходимо сгенерировать группу случайных чисел и посчитать сколько из них попадет в различные пределы. HashMap лучше всего подходит для этого, так как она ассоциирует объекты с объектами (в этом случае, значение объекта содержит число, произведенное Math.random( ) наряду с количеством вхождений этого числа):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
//: c09:Statistics.java
// Простая демонстрация HashMap.
 import  java.util.*;

 class  Counter { 
   int  i =  1 ; 
   public  String toString() { 
     return  Integer.toString(i); 
  }
}

 class  Statistics {
   public   static   void  main(String[] args) {
    HashMap hm =  new  HashMap();
     for ( int  i =  0 ; i <  10000 ; i++) {
      // Производим число от 0 до 20:
      Integer r = 
         new  Integer(( int )(Math.random() *  20 ));
       if (hm.containsKey(r))
        ((Counter)hm.get(r)).i++;
       else 
        hm.put(r,  new  Counter());
    }
    System.out.println(hm);
  }
} ///:~
В main( ) при каждой генерации случайного числа оно помещается в класс-оболочку Integer, так чтоб эта ссылка могла использоваться HashMap. (Вы не можете использовать примитивные типы с контейнером, только ссылки на объект.) Метод containsKey( ) проверяет, есть ли ключ уже в контейнере. (То есть, было ли число уже найдено?) Если это так, метод get( ) производит ассоциированное значение для этого ключа, которое, в этом случае, является объектом Counter. Значение i внутри счетчика инкрементируется, указывая, что определенное случайное число было обнаружено еще раз.

Если ключ до сих пор не был найден, метод put( ) поместит новую пару ключ-значение в HashMap. Так как Counter автоматически инициализирует свою переменную i при создании, это указывает на первое появление определенного случайного числа.

Для отображения HashMap, он просто печатается. Метод HashMap toString( ) проходит по всем парам ключ-значение и вызывает toString( ) для каждого из них. Integer.toString( ) является предопределенным и вы можете видеть toString( ) для Counter. При запуска мы получим такой вывод (после добавления нескольких символов конец строки):

{19=526, 18=533, 17=460, 16=513, 15=521, 14=495,
13=512, 12=483, 11=488, 10=487, 9=514, 8=523,
7=497, 6=487, 5=480, 4=489, 3=509, 2=503, 1=475,
0=505}
Вы можете быть удивлены необходимость класса Counter, для которого кажется, что он не имеет даже функциональности класса-оболочки Integer. Почему не использовать int или Integer? Хорошо, мы не можем использовать int потому, что все контейнеры могут хранить только ссылки на Object. После рассмотрения контейнеров классы-оболочки могли бы иметь для вас больше смысла, так как вы не можете поместить любой примитивный тип в контейнер. Однако есть только одна вещь, которую вы можете делать с оболочками в Java - это инициализация его определенным значением и чтение этого значения. То есть, нет способа изменить значение, как только оболочка будет создана. Это немедленно делает оболочку Integer бесполезной для решения нашей проблемы, так что мы вынуждены создавать новый класс, который удовлетворяет нашим требованиям.
...
Рейтинг: 0 / 0
Массивы
    #33286365
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naughttp://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

в хаше хранится пара ключ-значение - вы кладёте в хаш определённый объект (тот-же массив) с ключём "Петя", а потом по этому ключу можете получить его обратно... правда вот если у вас повторяющиеся названия то я мало-мало глупость предложил

Попробую...
...
Рейтинг: 0 / 0
Массивы
    #33286371
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН Thinking in Java
Функциональность Map
ArrayList позволяет вам выбирать из последовательности объектов, используя номер, другими словами, он ассоциирует номера с объектами. .....

Это уже серьезно... Благодарю. Интересно очень.
...
Рейтинг: 0 / 0
Массивы
    #33286478
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я балдею, как орлы вокруг девочки вьются)))) другого уже отправили к докам!
...
Рейтинг: 0 / 0
Массивы
    #33286491
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa
> Я балдею, как орлы вокруг девочки вьются)))) другого уже отправили к докам!Тема==Ответить


+1.

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Массивы
    #33286535
am_sasaЯ балдею, как орлы вокруг девочки вьются)))) другого уже отправили к докам!

Эх... хотя бы б фотку выложила
...
Рейтинг: 0 / 0
Массивы
    #33286537
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:D
...
Рейтинг: 0 / 0
Массивы
    #33286563
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasaЯ балдею, как орлы вокруг девочки вьются)))) другого уже отправили к докам!

Ребята сочтемся.
Ченить придумаю.
...
Рейтинг: 0 / 0
Массивы
    #33286577
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом топиком пользуются многие. Что очень полезно для этого форума.

А на счет фотки - ...http://]http://www.livejournal.com/userinfo.bml?user=zikava

Юзай и все получится...
...
Рейтинг: 0 / 0
Массивы
    #33286783
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlukOzaА потом топиком пользуются многие. Что очень полезно для этого форума.

А на счет фотки - ...http://]http://www.livejournal.com/userinfo.bml?user=zikava

Юзай и все получится...
Че-то я фотки не вижу там.
р.s.:я кстати тоже с Киева
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Массивы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]