gpt4 book ai didi

java - 我对象的ArrayList,indexOf问题

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:01 31 4
gpt4 key购买 nike

我对 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com