Сглаживание коллекции коллекций - PullRequest
4 голосов
/ 08 июля 2011

Я не уверен, что понимаю, что означает термин «выравнивание» в языках программирования. Точнее, что значит «сплющить коллекцию коллекций»?

Означает ли это что-то вроде: Collection< Collection< Object >> -> Collection< Object >?

Ответы [ 5 ]

2 голосов
/ 08 июля 2011

Это означает создание одной коллекции из всех элементов другой коллекции, независимо от того, являются ли эти элементы отдельными элементами или самими коллекциями. Итак, учитывая что-то вроде этого:

{{0, 1, 2}, 3, 4, {5, 6}, 7}

Где {0, 1, 2} и {5, 6} являются коллекциями, тогда у вас будет результирующий массив, подобный этому:

{0, 1, 2, 3, 4, 5, 6, 7}
2 голосов
/ 08 июля 2011

Сглаживание - это процесс преобразования нескольких коллекций (самих хранящихся в одной коллекции) в одну коллекцию, которая содержит все элементы в коллекциях, которые у вас были раньше.:

["apple", "ball"], ["cat", "dog"], ["elephant", "frog"]

Затем вы сохраняете эти три списка в списке:

[["apple", "ball"], ["cat", "dog"], ["elephant", "frog"]]

Когда вы сведете этот список, вы получите один список, содержащий все элементы:

["apple", "ball", "cat", "dog", "elephant", "frog"]
2 голосов
/ 08 июля 2011

Этот является некоторым документом.

Также, этот может быть полезным:

[[1], 2, [[3,4], 5], [[[]]], [[[6]]], 7, 8, []] => [1, 2, 3, 4, 5, 6, 7, 8]

Я думаю, что неофициальное определение будетрекурсивно получить все содержимое текущей коллекции и поместить все содержимое в одну коллекцию ".Конечно, рекурсивно можно было бы игнорировать, и в этом случае только один слой был бы поврежден.

1 голос
/ 08 июля 2011

Свести коллекцию означает поместить их в один объект.

Так что, если у меня есть массив с двумя объектами, имеющими три элемента: имя строки, возраст строки и дочерние элементы коллекции, где у дочерних элементов есть имяэлемент и элемент возраста, как это

Массив

Obj 1: Name: Kevin Age: 27 Children: [{Name: Matt Age: 6}]
Obj 2: Name: Jim Age: 22 Children: [{Name: Jake Age: 3},{Name: Jerry Age: 7}]

Выровняется это будет выглядеть так:

Obj1: Name: Kevin Age: 27 Child1Name: Matt Child1Age: 6
Obj1: Name: Jim Age: 22 Child1Name: Jake Child1Age: 3 Child2Name: Jerry Child2Age: 7

Разница в том, что в первой группе Obj1 содержитмассив объектов, в то время как во второй группе obj1 является одним объектом с объектами в массиве дочерних элементов, добавленных в качестве элементов.

1 голос
/ 08 июля 2011

Я бы сказал, да. Можно удалить только один уровень коллекций или все уровни коллекции.

...