Java - 保持最佳结果的集合

时间:2017-04-29 14:01:44

标签: java collections 2d point traveling-salesman

我有一个2D点列表(自定义Node类)。 我想选择一个Node并说“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的节点)

ADD: 每次添加元素时,如果集合已满,则最新元素将被删除。集合应始终是纵坐标,并且此操作应尽可能快 (如果我在topten中有8个元素,我将在添加后最终添加9个元素。 如果我有10个元素,那么在添加后我将得到10个元素

非常感谢你!

1 个答案:

答案 0 :(得分:0)

最后,我真正想要的是一个集合

  • 总是排序
  • WITH FIXED LENGTH

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