Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 20:37   #1
Артем533
Новичок
Джуниор
 
Регистрация: 16.11.2012
Сообщений: 1
По умолчанию Hashmap

Написал программу, которая должна делать следующее:
есть n точек, у каждой точки есть соответственно координата x, y, а также значение в этой точке, при чем, если координаты точек совпадают, то значение складывается, вывести надо все точки(так чтобы не повторялись пары координат) и значения в них. Можно это реализовать при помощи строчки, в которой будут храниться координаты, я так сделал, все хорошо получилось, а как сделать это с помощью класса? То есть я это написал, но моя программа сравнивает не по значение, а по адресу, по которому расположены эти координаты, вот код:
Код:
import sun.font.TrueTypeFont;

import java.awt.*;
import java.util.*;
 class Points implements Comparator<Points>{
    static int  x,y;

    @Override
    public int compare(Points o1, Points o2) {
        if ((o1.x == o2.x) && (o1.y == o2.y)){
            return 0;
        }
        else{
            return 1;
        }
    }
}

class HashMapDemo {
    public static void main(String args[]){
        HashMap<Points, Integer> hm = new HashMap<Points, Integer>();
        Scanner in = new Scanner(System.in);
        String[] s = new String[100];
        Integer i;
        Integer n, x, y;
        Integer k;
        n = in.nextInt();
        //HashMap<String, Integer> hm = new HashMap<String, Integer>();
        System.out.println("Enter number of points");
        for (i=1;i<=n;i++){
            Points point = new Points();
            point.x = in.nextInt();
            point.y = in.nextInt();
            k = in.nextInt();
            if (hm.containsKey(point)){
                int p = hm.get(point);
                hm.put(point, p+k);
            }
            else{
                hm.put(point,k);
            }
        }
            //Set<Map.Entry<String,Double>> set = hm.entrySet();
        Set<Map.Entry<Points,Integer>> set = hm.entrySet();
        for(Map.Entry<Points, Integer> me : set){
                System.out.print (me.getKey() + ": ");
                System.out.println(me.getValue());
        }
    }
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.11.2012 в 01:06.
Артем533 вне форума Ответить с цитированием
Старый 21.11.2012, 22:41   #2
dima.horshenin
 
Аватар для dima.horshenin
 
Регистрация: 21.11.2012
Сообщений: 4
По умолчанию

Сравнение по значению в java производится с помощью метода equals, в Вашем случае:
PHP код:
if (o1.equals(o2)){
return 
0;
}
else{
return 
1;

dima.horshenin вне форума Ответить с цитированием
Старый 25.11.2012, 00:17   #3
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Еще иногда не заменим метод compareTo (особенно при сортировках).
Ну это так, на заметку.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск