【发布时间】:2019-05-07 11:58:43
【问题描述】:
我在 HashSet 中保存坐标值。
而且我想按照上图中的顺序进行排序。
下面是一个典型的点结构,使用一个Hashset。
struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
private HashSet<Point> hashset = new HashSet<Point>();
我找到了一个只对一个值进行排序的来源。
但是,我还没有找到对两个或坐标值进行排序的来源。
举个例子说明如何对坐标进行排序。
【问题讨论】:
-
您希望如何对给定象限内的点进行排序?
-
HashSet 没有顺序,这意味着使用 HashSet 或数组来存储值都没有关系。您想存储以特定排序顺序(在这种情况下您将不得不使用不同的容器)或以特定顺序读取它们的值吗?在这种情况下,您可以使用 LINQ 和任何允许使用
Comparer参数进行排序的容器,并使用自定义比较器 -
对于一个保持秩序的集合stackoverflow.com/questions/1552225/…
-
实际上 HashSet 确实有一个顺序,因为您可以将它用作 IEnumerable 并且它在现实中确实保持顺序,但这不是一个可以依赖的行为,因为它不能保证,当然它不是一个好的无论如何都想这样做:)
-
@IlyaChernomordik 但不太可能是插入顺序,添加项目后可能会完全不同。