如何检查ArrayBuffer中是否存在值?

时间:2014-09-06 23:31:16

标签: scala arraybuffer

我是Scala的新手,我正在编写一个程序,其中我有一个二进制图像点的ArrayBuffer,我想检查一个循环,如果该ArrayBuffer中存在一个特定点不添加。这是我正在处理的代码的一部分:

var vectVisitedPoint= new scala.collection.mutable.ArrayBuffer[Point]()
    var pTemp=new Point (0,0)
    var res = new Array[Byte](1)
    img.get(pTemp.x.toInt,pTemp.y.toInt,res) //img is a binary image
    var value1: Int=0
    var value2: Int=0
    scala.util.control.Breaks.breakable {
            while((value1 < img.rows ) ){
                    while ( (value2 < img.cols )){
                             if (res(0) == -1 && vectVisitedPoint.exists(value1,value2)) {//this is where I want to check if the current point (value1,value2) is already exists in vectVisitedPoint
                                    pTemp.x=(pTemp.x.toInt)+value1
                                    pTemp.y=(pTemp.y.toInt)+value2
                                    vectVisitedPoint.append(new Point(pTemp.x,pTemp.y)
                                    scala.util.control.Breaks.break()
                              }
                    value2=value2+1
                    img.get(value1,value2,res)
                    }
            value2=0
            value1=value1+1
            }
    }
}

我想我需要用另一种方式写它,但不知道怎么做?!

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用:

vectVisitedPoint.exists(_ == (value1, value2))

您是否希望我将您的代码重构为更少的代码,更多功能,更可读和可能更有效的方法?如果是这样,我会创建另一个问题。