Java LinkedList - получение индекса объекта - PullRequest
0 голосов
/ 19 марта 2012


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

public Class Method {
List<String> inputParameters;
String resultVariableName;
}

Теперь у меня есть LinkedList<Method>, который действует как хранилище Method объектов.

При наличии объекта Method существует способ, которым можно конкретно определить правильный индекс объекта Method.
Мой вопрос возникает из-за того, что класс LinkedList имеет подпрограмму indexOf, но эта подпрограмма возвращает первое вхождение объекта, но тогда нет данных, что 2 копии объекта Method не могут находиться в LinkedList ( верно?)
Будет ли пометка каждого Method объекта, когда я добавляю его в LinkedList, решить мою цель, и если так, есть ли идеальный способ сделать это?

РЕДАКТИРОВАТЬ:
Объяснение моего варианта использования немного дальше.
Мой код в основном читает шаблон Velocity сверху вниз и создает Method объектов. Один Method объект создается для каждой встреченной скорости. Это объясняет, почему один и тот же элемент может храниться под несколькими индексами в LinkedList, поскольку нет реального ограничения на то, сколько раз вызывается подпрограмма Velocity или какие входы / результаты предоставляются для подпрограммы Velocity.

Теперь у меня есть компонент пользовательского интерфейса, одна JButton на Method ссылка на объект в LinkedList<Method>, с помощью которой пользователь может щелкнуть и отредактировать объект Method.

Таким образом, мне нужно знать, какую именно Method ссылку на объект редактировать в том случае, если одни и те же элементы находятся дважды или более количество раз в LinkedList<Method>

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

Что вы подразумеваете под «правильным» индексом в первую очередь?Если связанный список может содержать один и тот же элемент дважды или более (и здесь следует соблюдать осторожность - список будет содержать только ссылку на объект Method, а не на сам объект), то какой индекс будет "правильным""на ваш взгляд?

Конечно, вы можете просто выполнить итерацию по связанному списку самостоятельно и вернуть все индексы, при которых происходит указанная ссылка Method, но неясно, что выпытаясь сделать с ним.

Обратите внимание, что индексы не часто используются со связанными списками для начала, поскольку при получении элемента в данный индекс является операцией O (n).

0 голосов
/ 19 марта 2012

"не предоставлено 2 копии объекта Method, который не может находиться в LinkedList" , если это сценарий, как вы будете определять, какой объект нужно извлечь ??

Вв этом случае я бы предложил вам использовать LinkedHashMap , где вы можете использовать идентификатор в качестве ключа для уникальной идентификации Method's объекта.

0 голосов
/ 19 марта 2012

LinkedList не избегает дубликатов, он может иметь более одной копии.

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

OR

Если вы хотите получить все экземпляры объекта Method, вы можете использовать ListIterator, собрать все его экземпляры и вернуть в результате эту коллекцию.

0 голосов
/ 19 марта 2012

Дубликаты разрешены в LinkedList's.

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