@synapse_people

Как взять из очереди 2 элемента с минимальной дистанцией между ними?

Здравствуйте!

Есть PriorityBlockingQueue, в нем 40 объектов типа Client(по сути игрок). У каждого такого объекта есть его позиция в мире, которая задается при помощи Vector3D. Если быть точнее, то:
org.apache.commons.math3.geometry.euclidean.threed.Vector3D

Нужно вытащить из очереди сразу 2 игрока с самой маленькой дистанцией между ними.
Помогите дописать код:
public class TankDistanceComparator implements Comparator<Client> {

	@Override
	public int compare(Client o1, Client o2) {
/*Имплементация getPosition упущена за ненадобностью.*/
		Vector3D o1p = getPosition(o1);
		Vector3D o2p = getPosition(o2);

		double distance = o1p.distance(o2p);
/*Что тут нужно сделать?*/
		return 0;
	}
}

Да и как потом выбрать из очереди 2 элемента и более, например 10 игроков?
Как реализовать, подскажите, плиз.. Заранее спасибо!
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Тебе нужно Comparator, а не Comparator
Сходу, кроме полного перебора всех пар не могу придумать, но для 40 пар это не так страшно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы