Java-收集以保持最佳结果

Java-收集以保持最佳结果,java,collections,2d,point,traveling-salesman,Java,Collections,2d,Point,Traveling Salesman,我有一个二维点列表(自定义节点类)。 我想选择一个节点并说“嗯,我列表中最近的10个节点就是那10个” 现在,问题是什么: 我想做一些类似于: ArrayList<Node> nodes; //list of nodes ArrayList<Node> topten; //list of nearest nodes Node currentNode; //the current point for (

我有一个二维点列表(自定义节点类)。 我想选择一个节点并说“嗯,我列表中最近的10个节点就是那10个”

现在,问题是什么: 我想做一些类似于:

ArrayList<Node> nodes; //list of nodes
            ArrayList<Node> topten; //list of nearest nodes
            Node currentNode; //the current point
            for (Node x : nodes){
                if (x.distance(currentNode) < (topten.THE_FURTHER_POINT()).distance(currentNode))
                    topten.ADD(x);

            }
ArrayList节点//节点列表
ArrayList前十名//最近节点列表
节点当前节点//当前点
用于(节点x:节点){
如果(x.distance(currentNode)<(topten.THE_进一步的_点()).distance(currentNode))
前十名。添加(x);
}
我想知道是否已经有一个集合具有这些伪方法(进一步的点和添加) 这两种方法的工作原理如下:

进一步的观点: 返回下一点。集合应为固定长度,因此此方法应始终返回最后一个元素 (如果前十名中有8个元素,我应该接收索引为7的节点,如果有10个元素,我应该接收索引为9的节点)

加: 每次添加元素时,如果集合已满,则最新的元素将被删除。集合应始终保持一致,并且此操作应尽可能快 (如果我在前十名中有8个元素,那么在添加后我将有9个元素。 如果我有10个元素,我将在添加后得到10个元素)


多谢各位

最后,我真正要寻找的是一个收藏

  • 总是分类的
  • 定长
所以。。。读后
我想我找到了我的答案。这可以被认为是一个重复的问题。

通过实现
List
接口或根据需要扩展
ArrayList
类来创建自定义列表类当您知道您的问题是重复的时,不要写答案。投票将其标记为傻瓜(就像你已经做的那样,谢谢),然后等待。当其他人也投票赞成复制时,您应该能够接受(您在问题顶部收到通知),并且问题将被关闭。