【问题标题】:Look if an array has an specified object查看数组是否有指定的对象
【发布时间】:2011-12-03 21:49:18
【问题描述】:

我有一个由 X 个 2DPoints 组成的数组,我的目标是做一个布尔运算来检查该数组是否具有指定的 2DPoint。像这样的:

Point2D.Double arrayPoints[] = new Point2D.Double[numberOfPoints];
Point2D.Double pointPVariable = new Point2D.Double(positionXVariable,positionYVariable);
arrayPoints[variableNumber] = pointPVariable;

if(arrayPoints has the Point2D(2.45,6.52)){
    do this
}

如何进行布尔运算?非常感谢!

【问题讨论】:

    标签: java arrays contain


    【解决方案1】:
    Arrays.asList(arrayPoints).contains(new Point2D.Double(2.45,6.52))
    

    只要被比较的类覆盖 equals 方法,它就可以工作。

    【讨论】:

    • 我现在发现了这种数组搜索方法,谢谢。直到现在,我确信最好的方法是迭代数组的元素并检查每个元素,但我认为用一行代码来做这件事会更好:-)。使用这种方法与使用 for 循环迭代和检查数组有什么性能差异吗?
    • 这基本上做同样的事情。两种方法都是 O(n)。成本开销很小,因为必须构造 List,但这应该可以忽略不计,因为它将是一个 ArrayList,只有对原始数组的引用(而不是完整副本)。
    • 感谢您的解释。我很感激。 :)
    【解决方案2】:

    如果您的数组按照Point2D.Double 的自然顺序排序,则可以使用Arrays.binarySearch 方法。

    if (Arrays.binarySearch(arraysPoints, new Point2D.Double(2.45,6.52)) >= 0) {
        do this
    }
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 2019-03-31
      相关资源
      最近更新 更多