我想知道最有效的(编辑:最快的)方法是将IEnumerable<HashSet<T>>转换为包含所有元素的单个Hashset<T>。
抽样情况:
提供:
class Rectangle
{
public HashSet<Point> PointSet { get; set; }
}有效执行:
HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles) {}效率低下的解决办法:
HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
HashSet<Point> uniquePoints = new HashSet<Point>();
foreach (Rectangle rectangle in rectangles)
{
foreach (Point point in rectangle.PointSet)
{
uniquePoints.Add(point);
}
}
return uniquePoints;
}提前感谢!
发布于 2018-12-07 02:10:04
我认为不一定有更快的方法来完成您正在做的事情(至少不使用HashSets),但是下面是一个更短的方法:
HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
return new HashSet<Point>(rectangles.SelectMany(r => r.PointSet));
}或者,如果您使用的是.NET核心,只需:
HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
return rectangles.SelectMany(r => r.PointSet).ToHashSet();
}https://stackoverflow.com/questions/53662270
复制相似问题