加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 我的对象的ArrayList,indexOf问题

发布时间:2020-12-15 05:19:06 所属栏目:Java 来源:网络整理
导读:我有 Java的ArrayList问题.我创建了一个Object,它包含两个属性x和y.现在我在ArrayList中加载了一些对象.问题是我不知道如何使用我正在搜索的x属性找到某个对象的索引.有没有办法做到这一点? 解决方法 假设有类似的东西: public class Point { public final
我有 Java的ArrayList问题.我创建了一个Object,它包含两个属性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本身,这有时就足够了.如果你真的需要索引,那么你想使用indexed for循环,使用size()和get(int index)(参见BalusC的回答).

也可以看看

> Java Language Guide: the for-each loop
> java.util.List API

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

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

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

也可以看看

> How to sort an array or ArrayList<Point> ASC first by x and then by y?
> Java: What is the difference between implementing Comparable and Comparator?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读