【发布时间】:2017-04-29 14:01:43
【问题描述】:
我有一个二维点列表(自定义节点类)。 我想选择一个节点并说“Ehy,我列表中最近的 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);
}
我想知道是否已经有一个包含这些伪方法(THE_FURTHER_POINT 和 ADD)的集合 这两种方法应该像这样工作:
THE_FURTHER_POINT: 返回进一步的点。集合应该是固定长度的,所以这个方法应该总是返回最后一个元素 (如果我在 topten 中有 8 个元素,我应该收到索引为 7 的节点,如果我有 10 个元素,我应该收到索引为 9 的节点)
添加: 每次添加元素时,如果集合已满,最新的元素就会被淘汰。集合应始终是纵坐标,并且此操作应尽可能快 (如果我在 topten 中有 8 个元素,我将在添加后得到 9 个元素。 如果我有 10 个元素,我将在添加后得到 10 个元素)
非常感谢!
【问题讨论】:
-
通过实现
List接口或根据您的需要扩展ArrayList类来创建您的自定义List 类
标签: java collections 2d point traveling-salesman