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

Java 是否有一个数据结构可以通过x或y获取值?,java,Java,我有一个有很多点的数组列表,所以x,y。 我在XY上对点进行排序 是否有一种数据类型/算法可以快速获得某个x的所有y点?或者反过来说,所有x都在某个y上 目前,我有这样的东西,它可以正常工作,但我有一种感觉,它是复杂的,我需要什么 int lastXPos; int lastIndex; int[] workArray = new int[4096]; int workArrayIndex; // returns all the y values where x matches publi

我有一个有很多点的数组列表,所以x,y。 我在XY上对点进行排序

是否有一种数据类型/算法可以快速获得某个x的所有y点?或者反过来说,所有x都在某个y上

目前,我有这样的东西,它可以正常工作,但我有一种感觉,它是复杂的,我需要什么

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次,因此创建数据对象也必须很快


然后作为一个额外的问题,我们有行和列,有没有一种方法可以描述这两种情况?例如,方向。

我认为快速是指使用最少的代码,而不是使用最少的CPU周期?可能是一个映射,其中键是x,值是与该x关联的所有y值的数组列表。HashMap最快,但是,如果您仍要检索按x排序的点,则树形映射将是进行排序检索的最快方法。此外,您可以使用一个列表并调用阵列,而不是拥有两个数组并自己复制它。@NPE smalles CPU Cycle听起来像一个多映射作业,其中键为x,值为Y@ajb:normal map将每X只允许一个Y