Как свести коллекцию наборов, и я должен сделать это в первую очередь? - PullRequest
4 голосов
/ 08 февраля 2010

скажем, у меня есть график, реализованный с двумя картами (входными и выходными), которые отображают (источник, набор (край)) и (цель, набор (край)) соответственно. до сих пор у меня также был установлен allEdges, от которого я решил избавиться. вернуть набор ребер теперь сложнее, так как мне нужно выровнять значения одной из карт. Какой самый лучший (самый быстрый) способ сделать это? или я должен просто оставить набор allEdges (меня не волнует память, я просто подумал, что это немного избыточно).

спасибо

Ответы [ 2 ]

5 голосов
/ 08 февраля 2010

Время и пространство являются наиболее существенным компромиссом. Вы можете хранить свой набор ребер в явном виде, жертвуя количеством места, которое требуется для его получения, без необходимости его вычисления, или вы можете восстановить это пространство и вычислить набор всех ребер, когда вам это нужно.

Из вашего поста кажется, что первое - лучшее решение. Не беспокойтесь о «Правильном пути» - беспокойтесь о том, что имеет смысл для вашего приложения.

0 голосов
/ 08 февраля 2010

Обратите внимание, что если вы используете SetMultimap из google-collection , вы можете тривиально просмотреть коллекцию всех ребер, используя multimap.values(). В вашем случае, если я вас правильно понял, в этой коллекции не будет дубликатов, но, к сожалению, на самом деле не будет реализовано Set. Чтобы получить набор, используйте ImmutableSet.copyOf(multimap.values()).

И да, если вам понадобится его как набор часто, имеет смысл сохранить избыточный Set и постоянно обновлять его по ходу работы.

Или вы можете поцарапать все это и использовать полнофункциональную библиотеку графиков, такую ​​как JUNG .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...