集合喜欢HashTable
并且Dictionary
不允许添加具有相同键的值,但我想将具有相同键的相同值存储在Collection<int,string>
.
是否有一个内置的集合可以让我这样做?
集合喜欢HashTable
并且Dictionary
不允许添加具有相同键的值,但我想将具有相同键的相同值存储在Collection<int,string>
.
是否有一个内置的集合可以让我这样做?
您可以使用List<T>
包含自定义类的 a,甚至可以使用List<Tuple<int,string>>
.
List<Tuple<int,string>> values = new List<Tuple<int,string>>();
values.Add(Tuple.Create(23, "Foo"));
values.Add(Tuple.Create(23, "Bar"));
或者,您可以创建一个Dictionary<int, List<string>>
(或其他一些字符串集合),并以这种方式填充值。
Dictionary<int, List<string>> dict = new Dictionary<int, List<string>>();
dict.Add(23, new List<string> { "Foo", "Bar" });
这样做的优点是仍然可以通过键快速查找,同时允许每个键有多个值。但是,稍后添加值有点棘手。如果使用它,我会将值的添加封装在一个方法中,即:
void Add(int key, string value)
{
List<string> values;
if (!dict.TryGetValue(key, out values))
{
values = new List<string>();
dict[key] = values;
}
values.Add(value);
}
将 aList
与自定义Class
.
public class MyClass
{
public int MyInt { get; set; }
public string MyString { get; set; }
}
List<MyClass> myList = new List<MyClass>();
myList.Add(new MyClass { MyInt = 1, MyString = "string" });
简而言之:最简单的方法是List<T>
跳过课程的通用集合ArrayList
。因为,您需要考虑一些性能注意事项。
此外,您还可以使用List<KeyValuePair<string,int>>
. 这将存储一个KeyValuePair
可以重复的 's 列表。
在决定是否使用List<T> or ArrayList
具有相似功能的类时,请记住List<T>
该类在大多数情况下性能更好并且是类型安全的。如果引用类型用于类的类型 T,List<T>
则两个类的行为是相同的。但是,如果将值类型用于类型 T,则需要考虑实现和装箱问题。
作为参考:您可以使用以下 MSDN 文章 - List Class。