Когда я создавал этот класс, я написал только три поля, все остальное автоматически генерировала среда intellij idea, что полностью оправдывает ее название. Напоминаю, для того, чтобы пользоваться автоматической генерацией кода нажмите одновременно alt+insert, а затем выберите объект, который хотите генерировать, кроме стандартных get и set, а также конструктора, я добавил equals,hashCode и toString. Эта процедура может понадобиться для того, чтобы использовать hashTable, дело в том, что для генерации хеша, данный класс использует вызов стандартной функции hashCode, которая по умолчанию для пользовательских объектов (унаследованных от класса object) возвращает адрес, т.е возникает такая же ситуация, как и со строками, если их сравнивать через ==. Напишем класс Test, в котором просто создадим ассоциативный массив, и попробуем добавить туда некоторое количество элементов, а затем будем пытаться получать студентов по их имени:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package ru.cybern;
import java.util.Hashtable;
import java.util.Map;
public class Test {
public void test()
{
Map<String, Student> map = new Hashtable<String, Student>();
Student st = new Student(0,"Alex", 18);
map.put("Alex", st);//добавляю студента Alex по ключу Alex
System.out.println(map.get("Alex"));//работает
System.out.println(map.get("Al" + "ex")); //работает
System.out.println(map.get(st.getName()));//работает
String s = "a";//пытаюсь обмануть компилятор
s = s.toUpperCase()+"lex";
System.out.println(map.get(s)); //работает
}
}
|
|