C++
Скажем, мы вставляем 5 объектов в набор. Каждый объект имеет идентификатор и имя в качестве атрибутов. Мы можем получить итератор для элемента, который мы ищем, например
int main()
{
set<Obj*> setObj;
Obj *objA = new Obj(10,"P"); Obj * objB = new Obj(20,"L");
setObj.insert(objA);setObj.insert(objB);
set<Obj*>::iterator it = setObj.find(objA);
if( it > 0 )
it->name = "New name";
}
//Надеемся, что идея понятна. В основном я могу изменить не ключевую часть объекта в наборе. В этом случае класс obj имеет ключ как id
Теперь в Java, так как у нас нет набора предложений find, это единственный способ сделать это, перейдя через?
извините, если синтаксис не совсем прав. Хавент скомпилировал код
Java Set не использует метод поиска hava. Он содержит только (Object o) и containsAll (Collectiono) метод. Вы должны выполнить итерацию набора, потому что набор Java не имеет последствий. Индекс - глупость.
Набор в Java предназначен для уникальных, неизменных элементов.
Если вы хотите иметь переменные значения, связанные с ключом, вы должны использовать карту. BTW Большинство установочных реализаций просто завершают карту.
iterator()
. stackoverflow.com/questions/7283338/...std::set<Obj*>
упорядоченный по значениям указателя. Если вы хотите отсортировать объекты по ихid
вам нужно использовать пользовательский объект сравнения. Кроме того, вы не можете сравнить итераторы с0
вам нужно сравнить итератор сend()
набора.