【问题标题】:Java - Collection to keep the best results [duplicate]Java - 收集以保持最佳结果[重复]
【发布时间】: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


【解决方案1】:

最后,我真正在寻找的是一个集合

  • 总是排序
  • 固定长度

所以...读完Java PriorityQueue with fixed size 我想我找到了我的回复。这可以被认为是一个重复的问题。

【讨论】:

  • 当你明白你的问题是骗人的,那就不要写答案了。投票将其标记为受骗者(就像您已经做过的一样,谢谢),然后等待。当其他人也投票支持重复时,您应该能够接受(您会在问题顶部收到通知)并且问题将被关闭。
猜你喜欢
  • 2012-09-11
  • 1970-01-01
  • 2012-02-16
  • 2020-10-13
  • 2015-02-19
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多