java - 什么样的集合类来获取数组中的位置?

标签 java list object

我遇到以下情况,我正在寻求建议,以便在 Java 中“正确”地做到这一点。

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

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

  • 对象X
  • 和对象Y

class A diagram

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

现在我需要在 ArrayList 中找到相同对象 Y 的索引。

请问我该如何做,而不做可怕的循环?

我可以用什么来代替ArrayList

最佳答案

使用列表,在列表中查找具有特定值的对象只需要循环查看每个对象,句点。

解决该问题的更自然的选择是将对象放入 Map 中,使用 Y 作为键,使用对象作为值:

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

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

A getA(Y y) {
    return map.get(y);
}

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

关于java - 什么样的集合类来获取数组中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26262137/

相关文章:

java - 为什么处于 BLOCKED 状态的线程不会被中断?

java - 如何使用简单的适配器和 ListView 创建自己的自定义行布局

java - 您如何在 GAE 的任务引擎中为任务设置 ETA?

html - 混合了字母和罗马字符的嵌套编号列表

javascript - p5.j​​s 中两个不同形状的物体碰撞检测

javascript - 编辑 JavaScript 对象

java - ArrayList 检查同一索引处两个对象值的组合

Python:倒序单词

Python:从嵌套列表中删除重复项

javascript - 使用 var 作为对象的键(特别是 jQuery.animate)