【问题标题】:HashSet c# element in HashSet modifyHashSet c# HashSet中的元素修改
【发布时间】:2016-04-25 19:21:53
【问题描述】:

如何修改 HashSet 中的元素?

我的 HashSet 看起来像:

HashSet<int> mynumbers = new HashSet<int>();
mynumbers.Add(rnd.Next(1, 11));
mynumbers.Add(rnd.Next(1, 11));

输出可以通过:

Console.WriteLine( mynumbers.ElementAt(0) + "and" + mynumbers.ElementAt(1));

例如:

2 和 10

但是我现在如何修改 HashSet 中的第一个值。

这是不可能的:

mynumbers.ElementAt(0) = 1; 

【问题讨论】:

  • HashSet&lt;T&gt; 按照设计不保留顺序。你希望完成什么?

标签: c# linq hashset


【解决方案1】:

由于该特定哈希集中的项目是不可变的,您不能改变该项目。您需要添加可变类型的项目才能对其进行变异(即使那样,如果您以更改该对象的相等性或哈希码的方式对其进行变异,您也会给自己造成重大问题)。

您可以从集合中删除该项目并添加一个新项目(使用这些操作的相应名称的方法),但这绝不会更改您添加的项目。

当然HashSet 是一个无序集合,集合中没有“第一个”项,给定对象只是在集合中或不在集合中,它不在集合中的给定位置。如果您需要集合中的项目有一个位置,那么您需要使用不同类型的集合。

【讨论】: