Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение параметров объектов, Сравнение параметров объектов в HashMap 
:(
    Опции темы
leyla89
Дата 1.10.2013, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.8.2013

Репутация: нет
Всего: нет



Фабрика из десяти юзеров в HashMap. Возраст - рандомные значения от 0 до 100. Когда будут перебираться в for: если два юзера с одинаковым возрастом, то клонировать одного из них. Не могу понять как это сделать с for. Думала с массивом из объектов, но тоже непонятно как там взять age. Поставьте на путь истинный. 
 
Код
public class User implements Cloneable{
 private int age = (int)(Math.random()*100);
 private int growth; 
private int weight; 
private String name;

public User(String name){
    this.name = name;
}

public int hashCode(){
    final int prime = 55;
    int result = 1;
    result = prime * result + growth;
    result = prime * result + weight;
    return result;
}

public User clone() throws CloneNotSupportedException{ 
    return (User) super.clone();
}

public boolean equals(Object obj){
    if(this == obj){
        return true;}
    if(obj == null){
        return false;
    }
    if(getClass() == obj.getClass()){
        return false;
    }
    User other = (User)obj;
    if(growth != other.growth){
        return false;
    }
    if(weight != other.weight){
        return false;
    }
    if(name != other.name){
        return false;
    }
    if(age != other.age){
        return false;
    }
    return true;
}

public int getAge(){
    return age;
}

public int getGrowth(){
    return growth;
}

public void setGrowthWeight(int growth, int weight){
    this.growth = growth;
    this.weight = weight;
}

public int getWeight(){
    return weight;
}

public String getName(){
    return name;
}
public static void main(String[] args) {        
    Map<User, Integer> map = new HashMap<User, Integer>();
    User u = new User("Emily");
    u.setGrowthWeight(165, 60);
    User u1 = new User("Emma");
    u1.setGrowthWeight(170, 65);
    User u2 = new User("Michael");
    u2.setGrowthWeight(180, 80);
    User u3 = new User("Andrew");
    u3.setGrowthWeight(180, 70);
    User u4 = new User("Isabella");
    u4.setGrowthWeight(158, 46);
    User u5 = new User("John");
    u.setGrowthWeight(164, 62);
    User u6 = new User("Samuel");
    u6.setGrowthWeight(184, 83);
    User u7 = new User("Anna");
    u7.setGrowthWeight(165, 53);
    User u8 = new User("Jasmine");
    u8.setGrowthWeight(168, 60);
    User u9 = new User("Robert");
    u9.setGrowthWeight(193, 78);
    map.put(u, 1);
    map.put(u1, 2);
    map.put(u2, 3);
    map.put(u3, 4);
    map.put(u4, 5);
    map.put(u5, 6);
    map.put(u6, 7);
    map.put(u7, 8);
    map.put(u8, 9);
    map.put(u9, 10);
    for(Entry<User, Integer> entry : map.entrySet()){
        System.out.println(entry.getKey() + " " + entry.getValue());
    }           
}
}

PM MAIL   Вверх
Magistrus
Дата 2.10.2013, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



создай map Map<Integer, List<User>>

Код

Map<Integer, List<User>> ageMap = new HashMap<Integer, List<User>>();
for (Entry<User, Integer> entry : map.entrySet())
{
    int age = map.getKey().getAge();
    List<User> users = ageMap.get(age);
    if (users == null)
    {
         users = new ArrayList<User>();
    }
     users.add(map.getKey());
     ageMap.put(age, users);
}


Ну а потом пройдешься в цикле  по ageMap и прокланируешь. Можно это сделать и в этом цикле
Код

    if (users != null)
    {
         User newUser = map.getValue().clone();
    }


но я бы не рекомендовал бы тогда добавлять его в map

Это сообщение отредактировал(а) Magistrus - 2.10.2013, 10:18
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.