Я удивлен приказанием моего HashMap.Какой ключевой заказ в HashMap?
Я получаю
Chandler
Joe
Ross
1
в то время как я ожидал
Joe
Chandler
Ross
1
в соответствии с порядком, я добавил данных.
Можете ли вы объяснить эту проблему?
код Java:
тестирование HashMap:
public class HashCodeTest {
static int count = 0;
public static void main(String[] args) {
Map employees = new HashMap();
employees.put(new Employee("Joe"), new Integer("1"));
employees.put(new Employee("Chandler"), new Integer("2"));
employees.put(new Employee("Chandler"), new Integer("2"));
employees.put(new Employee("Ross"), new Integer("3"));
Iterator iterator = employees.keySet().iterator();
while (iterator. hasNext()) {
System.out.println(iterator.next());
}
System.out.println(count);
}
}
класс для ключа карты:
import java.util.*;
class Employee {
private String name;
public Employee(String name){
this.name = name;
}
public String toString(){
return name;
}
public boolean equals(Object obj){
HashCodeTest.count++;
if (obj == null) {
return false;
}
if (obj.getClass() != getClass()){
return false;
}
Employee emp = (Employee)obj;
if (this.name == emp.name){
return true;
}
return false;
}
public int hashCode(){
return name.hashCode();
}
}
В HashMap нет заказов. _ «Этот класс не дает никаких гарантий относительно порядка карты, в частности, он не гарантирует, что порядок останется постоянным с течением времени». _ –
В тесте я вижу разные варианты с разным порядком –