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