Всем привет. Такой вопрос связанный по Jav'е, я ее пока еще изучаю. В общем есть задача и условие такое: Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна я понимаю как ее решить математически используя эту формулу Lmin = Σ(с верху n, а с низу i=1) √((x2-x1)^2 + (y2-y1)^2)
, но у меня проблема заключается в том, что я использую HashSet после я ее конвертирую в HashMap а от туда у меня получается достать только значения y
значения по x
вообще не видит, я наверное не совсем правильный делаю подход к решении задачи буду рад помощи или совету как лучше достать данные из HashSet'а и потом уже по циклу найти минимум.
Вот мой код(если что класс Point - это готовый класс из пакета import java.awt.Point;
так же я делал создавая собственный класс Point но проблема та же с HashMap y видит а x нет):
Set<Point> points = new HashSet<>();
points.add(new Point(9, 0));
points.add(new Point(1, 1));
points.add(new Point(5, 6));
points.add(new Point(3, 3));
points.add(new Point(2, 7));
points.add(new Point(1, 8));
points.add(new Point(6, 1));
System.out.println(points);
Map<Double, Double> map = new HashMap<>();
for(Point ob : points) {
map.put(ob.getX(), ob.getY());
}
System.out.println(map);
double sum_m = 0;
for(double f : map.values()) {
sum_m+=f;
}
System.out.println(sum_m);
Map
не самая подходящая структура для решения такой задачи, как минимум потому что принципиально не хранит повторяющиеся ключи. Вы не сможете положить в него несколько точек с одинаковой координатой X
. Из точек (1,1) и (1,8) останется только одна, пр чем трудно предсказать какая. Да и зачем?
Для каждой точки переберите в цикле весь Set
и вычислите суммарное расстояние. Запомните точку с минимальной суммой.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу использовать HikariCP в своем приложении на спринге, но при создании DataSource возникает исключение