我有一个Point列表,我想按邻居排序。
举个例子 :
列表初始化
(0,0); (1,0); (5,0); (6,0);
(0,1); (1,1); (5,1); (6,1);
清单排序
(0,0); (1,0); (0,1); (1,1);
(5,0); (6,0); (5,1); (6,1);
我怎样才能做到这一点 ?
list.sort(new Comparator<Point>() {
@Override
public int compare(Point p1, Point p2) {
// Euclidian distance or something like that
return ;
}
});
最佳答案
您需要一种从一组点开始的算法。
如果集合中没有点,则停止。
制作一个新集合(当前对象),然后从原始集合中选择任意一点作为新集合中的第一个点。
从集合中删除选定的点,并将其添加到当前对象。
检查所选点的八个邻居中的每一个,以查看原始集合中是否有任何邻居。
对于找到的任何点,请从步骤3开始运行此算法(为此使用递归)。
如果没有邻居在原始集中,请返回到步骤1。
关于java - Java:对具有邻居的List <Point>进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23143735/