Я бы сделал это с коллекциями Google. Вы можете использовать функцию фильтра с предикатом, который запоминает предыдущие теги, и отфильтровывает записи с тегами, которые были там раньше.
Примерно так:
private Iterable<Rec> deDupe(List<Rec> recs)
{
Predicate<Rec> filterDuplicatesByTagPredicate = new FilterDuplicatesByTagPredicate();
return Iterables.filter(recs, filterDuplicatesByTagPredicate);
}
private static class FilterDuplicatesByTagPredicate implements Predicate<Rec>
{
private Set<String> existingTags = Sets.newHashSet();
@Override
public boolean apply(Rec input)
{
String tag = input.getTag();
return existingTags.add(tag);
}
}
Я немного изменил метод, чтобы он возвращал Iterable вместо List, но, конечно, вы можете изменить его, если это важно.