Excel 2016 перезагружается, когда я пытаюсь записать макрос

Другое решение - использовать предикат, тогда вы можете использовать его в любом фильтре:

public static <T> Predicate<T> distinctBy(Function<? super T, ?> f) {
  Set<Object> objects = new ConcurrentHashSet<>();
  return t -> objects.add(f.apply(t));
}

Затем просто используйте предикат где угодно:

employees.stream().filter(distinctBy(e -> e.getId));

Примечание: в JavaDoc фильтра, в котором говорится, что он принимает безгражданный Predicte. На самом деле это прекрасно работает, даже если поток параллелен.

О других решениях:

1) Использование .collect(Collectors.toConcurrentMap(..)).values() - хорошее решение, но это раздражает, если вы хотите сортировать и сохранить порядок.

2) stream.removeIf(e->!seen.add(e.getID())); также является еще одним очень хорошим решением. Но мы должны убедиться, что коллекция реализована removeIf, например, она будет генерировать исключение, если мы построим использование коллекции Arrays.asList(..).

0
задан Kasra 13 July 2018 в 19:10
поделиться

1 ответ

Я нашел решение этой проблемы! ... Я сделал щелчок на «Reference ...» в VBA Developer в Excel, и я получил это сообщение: Unrecognized Project Language, затем я перешел в региональную настройку, и я очистил (снял) бета-версию: используйте Unicode UTF- 8 ... Теперь VBA работает правильно.

0
ответ дан Kasra 17 August 2018 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: