Я пытаюсь создать упорядоченную карту, которая использует сравнительные сравнения расстояний. Однако способ ConcurrentSkipListMap (который я использую в данный момент) интерпретирует сравнения с компаратором, делает сравнение относительных расстояний невозможным. Существуют ли какие-либо структуры данных, которые позволяют использовать карты, такие как операции с ключом и относительный порядок?Компаратор Java с относительным расстоянием
Когда я говорю о сравнительных сравнениях, я имею в виду, что два значения нельзя сравнивать напрямую, но их нужно рассматривать с помощью контрольной точки. Подумайте, как эвклидово расстояние.
РЕДАКТИРОВАТЬ:
, например: при сравнении двоичных чисел 0011 и 1100 хочу сказать, один больше, чем другие на основе расстояния Хемминга (количество 1 битов в XOR двух чисел, эквивалентно, расстояние между двумя узлами в графе гиперкуба), очевидно, мне нужна контрольная точка для сравнения расстояния, поэтому я выбираю 0000 в качестве ссылки. Расстояние от 0011 до 0000 равно 2, а расстояние от 1100 до 0000 равно 2, однако 1100 не равно 0011. Я бы хотел сказать, что они имеют одинаковое относительное расстояние, но не равны. В конечном итоге будет отсортирован список этих чисел. Для справки 0000, в порядке возрастания, мы могли бы иметь 1000, 0100, 1100, 1001, 0011, 1110, 1101, 1111.
edit2, почему я не могу использовать компаратор:
Фактор для этого общего порядка: {(x, y) такой, что c.compare (x, y) == 0}.
Из сравнения следует, что отношение является отношением эквивалентности на S и что наложенный порядок является полным порядком на S. Когда мы говорим, что упорядочение, налагаемое с на S, согласуется с равенствами, мы имеем в виду, что фактором для упорядочения является отношение эквивалентности, определяемое методом (объектами) объектов: equals (Object): {(x, y) такое, что x.equals (y)}.
http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
Пример ввода и вывода будет полезен. – khelwood
Можете ли вы опубликовать код, который показывает, что вы пытаетесь сделать, даже если он не работает? Или пример входов и выходов, как сказал хелвуд. – immibis
Зачем вам устанавливать такой заказ? Может ли другая структура данных, например [4-d tree] (http://en.wikipedia.org/wiki/K-d_tree), работать лучше для вашей цели? Если вы работаете с 4-мерной геометрией, которая может иметь больше смысла, чем отсортированный список. –