class Foo
{
int x;
int y;
int z;
//Overriding equals() and hashCode() to just field x
}
List<Foo> myList=new ArrayList<Foo>();
myList.add(fooObj);
myList.add(fooObj2);
Все мои Foo Объекты в основном сравниваются на основе поля x.Как вернуть объект из коллекции.
Я хотел бы получить fooObj из списка по значению x. Почему нет смысла добавлять метод get(Object o)
вместо работы вокруг list.get(list.indexOf(fooObj))
, чтобы получить полный объект из списка. indexOf()
может возвращать «null« так что нужна нулевая проверка, которая также не хороша.
UPDATE:
Карта будет хорошей идеей иметь ключевое значение пары GetX() -> objFoo. Если мой Foo определяется двумя полями, скажем, X и Y класса Foo, то Карта не может использоваться для этой цели.
Если вы хотите получить объекты таким образом (в основном, используя частичные экземпляры Foo как ключей для извлечения сохраненных экземпляров), вам, вероятно, рекомендуется рассмотреть возможность поиска в виде набора ключей, например 'Set' –
CPerkins
Набор тем хуже. Вы даже не можете получить такой объект, как список путей, который можно выполнить с помощью метода IndexOf(), а затем применить get(). –
Почему вы не могли создать парный объект, содержащий y и z, и сохранить его на карте? – selig