public class Solution implements Cloneable{
public static void main(String[] args) {
Solution solution = new Solution();
solution.users.put("Hubert", new User(172, "Hubert"));
solution.users.put("Zapp", new User(41, "Zapp"));
Solution clone = null;
try {
clone = (Solution) solution.clone();
System.out.println(solution);
System.out.println(clone);
System.out.println(solution.users);
System.out.println(clone.users);
} catch (CloneNotSupportedException e) {
e.printStackTrace(System.err);
}
}
protected Map<String, User> users = new LinkedHashMap();
@Override
protected Object clone() throws CloneNotSupportedException {
Solution sol = new Solution();
for(Map.Entry<String, User> u : this.users.entrySet())
sol.users.put(u.getKey(), (User)u.getValue().clone());
return sol;
}
public static class User implements Cloneable {
int age;
String name;
public User(int age, String name) {
this.age = age;
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public boolean equals(Object obj) {
if(obj == null) return false;
if(obj == this) return true;
if(obj.getClass() != getClass()) return false;
User user = (User) obj;
return user.age == age && Objects.equals(user.name, name);
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
}
}
Максим
40 уровень
Хеш-код map'а вычисляется на основе ключ:значение?
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергеев ВикторMaster
23 марта 2019, 18:42
нет, хеш только для ключа и по нему же и вычисляется
0