是否有数据结构可以通过x或y获取值?

时间:2014-12-12 07:10:49

标签: java

我有一个包含很多点的ArrayList(所以x,y)。 我在XY上对点进行了分类。

是否有数据类型/算法可以使所有y点快速获得某个x? (或者相反,某个y上的所有x)。

目前我有类似这样的东西,但是我感觉很复杂,但我感觉很复杂。

int lastXPos;
int lastIndex;

int[] workArray = new int[4096];
int workArrayIndex;


// returns all the y values where x matches
public int[] grab(int xPos) {

    workArrayIndex = 0;

    int startIndex = 0;

    // this can increase speed a lot
    if (lastXPos+1 == xPos) {
        startIndex = lastIndex+1;
    }

    PVector v;
    for (int i = startIndex; i < vecs.size(); i++) {
        v = vecs.get(i);
        if (v.x > xPos) {
            lastIndex = i-1;
            break;
        }

        if (v.x == xPos) {
            workArray[workArrayIndex++] = (int) v.y;
        }

    }

    lastXPos = xPos;

    int[] result = new int[workArrayIndex];

    for (int i = 0; i < workArrayIndex; i++) {
        result[i] = workArray[i];
    }

    return  result;

}

编辑:

还有一件事,它必须每秒处理60个新列表,因此创建数据对象也必须快速。

然后作为奖励问题,我们有行和列,有没有办法描述这两个? (例如方向)。

0 个答案:

没有答案