Могу ли я получить ссылку на объект List <>, имеющий ссылку на один из его элементов? - PullRequest
0 голосов
/ 11 апреля 2011

Например, у меня есть ссылка на mItem объект моей коллекции List<mItem> mList. Можно ли получить ссылку на mList, используя mItem?

Ответы [ 4 ]

7 голосов
/ 11 апреля 2011

Короткий ответ - нет.Элементы в списке не знают, что они находятся в списке.(Если, конечно, вы не добавите ссылку на список внутри вашего объекта mItem.)

2 голосов
/ 11 апреля 2011

Как сказал jzd ... вы можете добавить поле к вашему mItem классу (например, referenceHolder)

mItem(Object ref){
    referenceHolder = ref;
}

класс со списком:

mList.add(new mItem(this));

что-то подобное должно работать :), но это немного странно;), потому что обычно "элементы в списке не знают, что они есть в списке."

РЕДАКТИРОВАТЬ: и, как было сказано ранее - «Один объект должен быть членом нескольких коллекций» - поэтому вам нужно изменить тип моего referenceHolder на какой-нибудь список или массив, чтобы это могло произойти.

EDIT2: это просто ссылка на объект, содержащий этот список (если один объект будет иметь несколько списков, вы не сможете знать, что он содержит этот указанный mItem объект), чтобы ссылаться на сам список, который вам понадобится ( как сказано в комментарии;)) реализация пользовательского списка, добавляющая ссылки на хранимые объекты с помощью this в методе add().

2 голосов
/ 11 апреля 2011

Краткий ответ: нет.

Добавление элемента в список добавляет ссылку на этот объект в список.Это не влияет на сам объект.

Вы можете проверить, есть ли элемент в определенном списке, с помощью mList.contains(mItem), который возвращает true, если элемент находится в mList.В качестве альтернативы, если вам действительно нужно, вы, как и другие, могли бы предложить версию List, которая сообщает каждому элементу, что в списке есть ссылка на этот элемент.Затраты были бы довольно грязными.

Мета вопрос: зачем вам эта функциональность?

0 голосов
/ 11 апреля 2011

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

Примечание: для списка вы можете иметь один и тот же элемент несколько раз и в нескольких списках.

Кстати: если вы не хотите дубликатов в списке и не заботитесь о порядке элементов, то набор может быть вашим лучшим выбором.

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