Функциональные структуры данных в Java

Я голосовал бы за OMake. Это фиксирует, все жалуется, что я имел с GNU, сделайте:

  • это - полноценный язык.
  • использование MD5 вместо меток времени.
  • обеспечивает минимальную оболочку, которая реализует самые полезные команды Unix на всех платформах: найдите, sed, awk, и т.д.
  • , работы или с Unix или с DOS разрабатывают пути.
  • экстенсивно зарегистрированный.
  • поддержки параллельны сборкам.
  • быстро.

10
задан Claudiu 5 November 2009 в 20:39
поделиться

8 ответов

Функциональная Java имеет Наборы, списки и другие интересные абстракции.

15
ответ дан 3 December 2019 в 19:33
поделиться

Вам не нужен scala. Просто передайте свою коллекцию в:

java.util.Collections.unmodifiableCollection(/* Collection<? extends T> c */);
java.util.Collections.unmodifiableSet(Set s);
java.util.Collections.unmodifiableMap(Map m);
java.util.Collections.unmodifiableList(List l);

Я только что видел это из другого вопроса SO:

Google ImmutableSet

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/ collect / ImmutableSet.html

из документов:

В отличие от Collections.unmodifiableSet (java.util.Set), что является видом отдельного коллекция, которая все еще может меняться, экземпляр этого класса содержит его собственные личные данные и никогда не будут менять. Этот класс удобен для общедоступные статические конечные наборы ("константа наборы "), а также позволяет легко создавать «защитная копия» комплекта, предоставленного ваш класс вызывающим абонентом.

отредактировано с целью включения комментария.

1
ответ дан 3 December 2019 в 19:33
поделиться

Похоже, вы ищете Scala . Он компилируется в .class, так что этого достаточно, правда?

1
ответ дан 3 December 2019 в 19:33
поделиться

Строки и числа являются неизменяемыми функционально, но большинство коллекций - нет (неизменяемые коллекции вызывают исключения при добавлении, удалении и т. Д.). CopyOnWriteArrayList и CopyOnWriteArraySet являются наиболее близкими в этом смысле.

0
ответ дан 3 December 2019 в 19:33
поделиться

Если вас интересует работа с коллекциями в функциональном стиле, обратите внимание на lambdaj

0
ответ дан 3 December 2019 в 19:33
поделиться

Что ж, есть два возможных подхода к "изменению" неизменяемой коллекции:

  • Сделайте копию, которая включает "изменение"

  • Создайте новый, другой объект, состоящий из ссылки на исходный объект и ссылки на описание изменения.

Clojure использует второй подход, так что становится довольно быстро создавать множество братьев и сестер исходной коллекции с небольшими исправлениями для каждого, с разумной памятью требования. Но большая часть кода Java обычно выбирает первый вариант.

Как бы то ни было, Google создал несколько коллекций, поддерживающих программирование в функциональном стиле: http://code.google.com/p/google -collections / , но я не изучал их подробно.

1
ответ дан 3 December 2019 в 19:33
поделиться

Взгляните на коллекции Google .

-1
ответ дан 3 December 2019 в 19:33
поделиться

Всегда приятно видеть подключенные коллекции Google, но нет, у нас этого нет. Я не знаю такой библиотеки Java. Внутри Google мы реализовали некоторые функциональные структуры списков, и знаете что? Никто ими не пользуется. Так что в ближайшее время они вряд ли станут открытыми.

1
ответ дан 3 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

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