Что такое представление Java 8?

Я смотрю выступление Пола Филипса:

http://www.youtube.com/watch?v=TS1lpKBMkgg

в 12:48 он говорит, что «в Java 8 их представления действительно работают» при сравнении Scala и Java

Что такое «представления» Java и что такое эквивалент Scala?

обновление: благодаря ответу Дэниела я нашел эту статью полезной: http://www.scala-lang.org/docu/files/collections-api/collections_42.html


person blue-sky    schedule 31.10.2013    source источник
comment
Не просматривая всю лекцию, я предполагаю, что он имеет в виду мнение Java о том, каким должен быть язык (или любой другой язык). Примером представления Java может служить следующий документ Oracle: oracle.com/technetwork/ java/simple-142616.html, в котором описываются различия между C++ и Java и объясняется причина их удаления.   -  person Radiodef    schedule 01.11.2013


Ответы (1)


Stream в Java 8 — это то, что он имеет в виду под представлениями. У них есть два важных свойства:

  1. Они не являются строгими, что означает, что они производят результат только по требованию.
  2. Они «объединяют» вместе несколько операций, поэтому вы можете выполнять несколько вызовов map или filter, а исходная коллекция все равно будет повторяться только один раз.

Эквивалентом Scala являются различные коллекции View, которые можно получить, вызвав .view для существующей коллекции. У них есть эти свойства — в конце концов, они являются определяющими свойствами, — но они изобилуют недостатками и ошибками, не говоря уже об очень сложной реализации.

Пол играл с альтернативными реализациями для него время от времени, но их замена никогда не была приоритетом.

person Daniel C. Sobral    schedule 01.11.2013
comment
Я бы подумал, что потоки Scala будут аналогом новых потоков Java 8. Применяются ли те же проблемы с представлениями Scala к потокам Scala? - person DaoWen; 03.11.2013
comment
@DaoWen Нет, Scala Stream надежна. Основная претензия к нему заключается в том, что он не такой нестрогий, как мог бы быть, поскольку head является строгим. Однако это коллекция со своими характеристиками, похожая на List, в то время как представление или Stream в Java представляют собой скорее механизм, размещенный перед другой коллекцией. - person Daniel C. Sobral; 04.11.2013