Итак, у меня есть 2-й массив (действительно, список списков), который мне нужно прокрутить и удалить любые дубликаты, но только для определенного поля.Хэш-элементы в массиве 2d, но только по одному индексу
Основной макет - это список совпадений, каждый из которых имеет идентификационный номер и дату. Мне нужно удалить все дубликаты, чтобы каждый идентификатор отображался только один раз. Если идентификатор появляется несколько раз в списке совпадений, я хочу взять Матч с самой последней датой.
В моем текущем решении я взял список совпадений, добавив его в HashSet и преобразовывая его обратно в ArrayList. Однако все, что делает, это удалить любые точные совпадения совпадений, которые по-прежнему оставляют меня с одинаковым идентификатором, появляющимся несколько раз, если у них разные даты.
Set<Match> deDupedMatches = new HashSet<Match>();
deDupedMatches.addAll(originalListOfMatches);
List<Match> finalList = new ArrayList<Match>(deDupedMatches)
Если мои исходные данные, поступающие в есть
{(1, 1-1-1999),(1, 2-2-1999),(1, 1-1-1999),(2, 3-3-2000)}
то, что я вернусь есть
{(1, 1-1-1999),(1, 2-2-1999),(2, 3-3-2000)}
Но то, что я действительно ищет решение, которое бы дайте мне
{(1, 2-2-1999),(2, 3-3-2000)}
У меня возникла смутная идея хэшировать исходный список одним и тем же основным способом, но только с использованием идентификаторов. В принципе, я получаю «ведра» на основе идентификатора, который я мог бы перебирать, и любого ведра, в котором было более одного совпадения, я мог выбрать правильный. Вещь, которая меня подвешивает, - это фактическое хеширование. Я просто не уверен, как или если я смогу разбить матчи таким образом, о котором я думаю.
, как мы должны помочь без кода .. – Javant
Так что, если я понимаю этот вопрос правильно вам дается 2-мерный массив объектов Match. Вы хотите сжать это в список, где нет дубликатов? Не можете ли вы использовать словарь и перебрать в 2-D список и проверить, существует ли ключ (ID в этом случае) и если да, то сравнить даты? Может быть, я не очень хорошо понимаю этот вопрос. –
@MichaelPlatt У вас есть идея правильно, и я тоже рассматриваю этот вариант. Мне было интересно узнать, есть ли более эффективный/эффективный способ, кроме как просто перебирать все элементы и проверять каждое столкновение. –