Java 要在数组中获得位置的集合类是什么?

Java 要在数组中获得位置的集合类是什么?,java,list,object,Java,List,Object,我遇到了以下情况,我请求您提供一个建议,以便在Java中“正确”地执行此操作 我有一个ArrayList,其中包含一个对象列表(我们称之为objecta) 每个对象都由另外两个对象组成,我们称它们为 对象X 和对象Y 现在在我的代码中,一个方法返回一个对象Y的实例 现在我需要ArrayList中的索引,在那里我找到了相同的对象Y 请问我怎么做,不做可怕的循环 我可以用什么来代替数组列表呢?基本方法:在数组中循环并执行 (keyY.equals(array[index].getY()){ r

我遇到了以下情况,我请求您提供一个建议,以便在Java中“正确”地执行此操作

我有一个
ArrayList
,其中包含一个对象列表(我们称之为objecta

每个对象都由另外两个对象组成,我们称它们为

  • 对象X
  • 和对象Y

现在在我的代码中,一个方法返回一个对象Y的实例

现在我需要
ArrayList
中的索引,在那里我找到了相同的对象Y

请问我怎么做,不做可怕的循环


我可以用什么来代替数组列表呢?

基本方法:在数组中循环并执行

(keyY.equals(array[index].getY()){ return index;}

更优雅的解决方案是,在填充数组时创建一个数据结构,将Y的实例映射到数组中的索引(或基于实际用例的一些更有意义的映射),并确保在
Y
中实现适当的
equals()
hashCode()
您肯定应该尝试索引。。。它可能在某些对象上工作,也可能不工作,但这取决于数据成员

对于列表,在列表中查找具有特定值的对象只需要循环查看每个对象,周期

对于该问题,更自然的选择是将对象放入地图,使用Y作为键,对象作为值:

Map<Y, A> map = new HashMap<>();

void putA(A a) {
    map.put(a.Y, a);
}

A getA(Y y) {
    return map.get(y);
}
Map Map=newhashmap();
无效putA(A){
地图放置(a.Y,a);
}
A getA(Y){
返回map.get(y);
}

请注意,映射仅为Y的每个不同值存储一个A。它不适合将多个A与一个Y关联。为此,您可以使用Set或类似的映射。

Hve您是否尝试了indexOf方法?除非这些对象是不同类型的,否则在数组中循环并执行
(key.equals(array[index].getY()){return index;}
@nEm hi-nEm,谢谢,如果我错了,请更正我的错误,但如果我有对象A的实例,这将起作用;我有一个对象Y:-((那么你是如何使用该方法获取对象Y的?你能将对象Y映射到一个吗?@JigarJoshi谢谢Jigar,但我正在寻找一个更“优雅”的解决方案;-)数组没有
indexOf()
方法,如果你使用
ArrayList
那么
indexOf()
使用
equals()
内部,所以只有当您实现equals时,它才会工作,只是比较
y
,这是不好的,并且它在内部遍历数组