2013-12-13 2 views
3

С ArrayList Я хотел бы сделать что-то вродеКак заменить определенный элемент в LinkedHashSet?

myList.set(myList.indexOf(oldItemNumber), newItemNumber); 

Есть простой способ добиться этого для LinkedHashSet?

+0

Связанный: [Упорядоченная вставка в связанномHashSet, любой способ выполнения?] (Http://stackoverflow.com/q/12826916) –

ответ

2

Вопрос не имеет смысла для набора. Новый объект, добавленный к набору, либо равен существующей (в этом случае ничего не происходит), либо нет (в этом случае он добавляется в конце).

Невозможно вставить объекты в определенных местах, не удаляя и не добавляя все.

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

+0

Я думаю, что TreeSet будет лучшим выбором, чем. Благодаря! – GedankenNebel

2

Просто используйте метод put(). Он обновит эту конкретную запись.

+0

Извините, я имел в виду LinkedHashSet вместо LinkedHashMap =/ – GedankenNebel

+0

@GedankenNebel Тогда применяется та же логика. Используйте метод add(). – Juvanis

+0

Метод add() просто добавляет элемент в мой набор. Я хочу заменить определенный элемент int LinkedHashSet. – GedankenNebel

1

использование map.put(key ,value) если вы будете использовать тот же ключ он заменит предыдущее значение

+0

Извините, я имею в виду LinkedHashSet вместо LinkedHashMap =/ – GedankenNebel

+1

@GedankenNebel 'Set' dont позволяет дублировать значение и не упорядочивается, а также не индексируется, поэтому мы не можем заменить его на индекс – Deepak

+0

Хм, я вижу. Благодаря! – GedankenNebel

2

Из документации LinkedHashMap:

хэш-таблицу и связанную реализацию списка интерфейса Map, с предсказуемого порядка итерации. Эта реализация отличается от HashMap тем, что она поддерживает список с двойной связью, проходящий через все его записи . Этот связанный список определяет порядок итераций, который равен , как правило, порядок, в котором ключи были вставлены в карту (вставка-заказ). Обратите внимание, что порядок вставки не изменяется, если ключ снова вставлен в карту. (Ключ к повторной установки на карте м, если m.put (к, v) вызывается при m.containsKey (к) возвращает истинное непосредственно перед вызовом.)

Таким образом, вы можете просто put() новое значение, и оно будет сохранять текущее местоположение в заказе. Если вы хотите добавить его в конец, удалите старое значение и добавьте новое.

+0

Извините, я имею в виду LinkedHashSet вместо LinkedHashMap =/ – GedankenNebel

Смежные вопросы