Сравнение параметров объектов

 
0
 
Java
ava
leyla89 | 02.10.2013, 00:25
Фабрика из десяти юзеров в 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());
    }           
}
}
Comments (1)
ava
Magistrus | 02.10.2013, 10:13 #
создай 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.getValue());
     ageMap.put(age, users);
}


Ну а потом пройдешься в цикле  по ageMap и прокланируешь 
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit