java - 我对象的ArrayList,indexOf问题

标签 java object arraylist indexof

我对 Java 的 ArrayList 有疑问。我创建了一个对象,它包含两个属性 x 和 y。现在我已经在我的 ArrayList 中加载了一些对象。问题是我不知道如何找到我正在搜索的具有 x 属性的对象的索引。有什么办法吗?

最佳答案

假设是这样的:

public class Point {
   public final int x;
   public final int y;
}

和声明:

List<Point> points = ...;

您可以使用 for-each 遍历所有点并找到您想要的点:

for (Point p : points) {
   if (p.x == targetX) {
      process(p);
      break; // optional
   }
}

请注意,这不会为您提供索引,但会为您提供Point。本身,有时这就足够了。如果你真的需要索引,那么你会想要使用索引 for 循环,使用 size()get(int index) (参见 BalusC 的回答)。

另见


以上解决方案在O(N)中搜索对于每个 targetX .如果你经常这样做,那么你可以通过声明 class Point implements 来改进它。 Comparable<Point> , 使用 x作为 Collections.sort 的主要排序键.

然后你可以 Collections.binarySearch .设置时间为 O(N log N) , 现在可以在 O(log N) 中回答每个查询.

另一种选择是使用 SortedSet 例如 TreeSet , 特别是如果你有一个 Set<Point> , 不是 List<Point> .

另见

关于java - 我对象的ArrayList,indexOf问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769797/

相关文章:

java - 如何将 ArrayList 放入 bundle

java - 二进制 XML 文件行 #8 : Error inflating class fragment

java - Apache Tiles 3 和 Tomcat 8

python - "Enabling"类比较

javascript - 从数组中的对象中查找最大整数并返回键值对

java - 需要帮助来创建数据库 (Java)

android - 在共享首选项和数组列表中添加多个字段

java - 如何使用java为selenium WebDriver传递命令行参数(baseURL)

java - 如何使用方法引用表示法(Class::method)在 Java 中将方法作为参数传递?

c++ - 如何复读这门课?