这是一类哪个集合框架整理对象
Class Emp {
String firstName;
String lastName;
int sal;
-----------
}
在这里我有100名员工的名单,我想根据工资和名字&姓氏的对象进行排序。 使用收集框架工作我该怎么做? 它与字典的工作原理有关?
这是一类哪个集合框架整理对象
Class Emp {
String firstName;
String lastName;
int sal;
-----------
}
在这里我有100名员工的名单,我想根据工资和名字&姓氏的对象进行排序。 使用收集框架工作我该怎么做? 它与字典的工作原理有关?
我碰巧有博客上讲述这一段时间回来here
这真的取决于你所需要的,但我发现,词典在被类型安全的,最好的以及比正常的HashTable更快。然而,其他选项有各种各样的选项。列表和Arraylists(几乎没有人再使用这些)仅举几例。 MSDN有各种类型的例子,但为了获得性能,最好是谷歌一点点,并做出自己的决定,因为它不仅仅是性能。还有可扩展性以及是否使用复杂或基本类型。在这种情况下,您似乎正在使用复杂类型,但这可能不是您的总体目标。
此外,如果您需要更改通知或延迟加载等内容,则需要查看诸如IObservable集合和IQueryable之类的内容,并且是IEnumerable的扩展。
我刚刚注意到你最关心排序。在C#中,你最好的选择是使用IQueryable,如果你熟悉它,可以使用LINQ。它很快就会有很少的开销,并且会对你有的东西进行分类。
使用你的类,这里是你可以使用LINQ做什么
List<Emp> guy = new List<Emp>();
guy.Where(x => x.firstName == "George").OrderBy(x => x.lastName);
希望这有助于
.NET有几个集合,做你的任务只是冰山一角。
列表
您可以创建与所有的实体名单,并将其与方法Sort
排序。例如如何排序的工资(假设场是公开的):
List<Emp> empCollection= new List<Emp>
{
new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" },
new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" },
// etc.
};
empCollection.Sort((a,b) => a.sal.CompareTo(b.sal));
专业的和反对的:
SortedDictionary
你也可以使用一个SortedDictionary。字典是键和值的组合。在你的情况下,价值永远是员工。他们的关键是你想要项目排序的元素。例如进行排序名字:
SortedDictionary<string, Emp> empCollection= new SortedDictionary<string, Emp>
{
{"Chris", new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" }},
{"Bea", new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" }},
// etc.
};
专业的和反对的:
LINQ
您可以使用LINQ来创建新创建和排序列表:
List<Emp> empCollection= new List<Emp>
{
new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" },
new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" },
// etc.
};
List<Emp> sortedEmpCollection = empCollection.OrderBy(e => e.lastName).ToList();
专业的和反对的:
您是否想同时将'salary'作为'firstName'作为'lastName'进行排序(所以如果工资相等,则比较firstNames)?或者你想在这个时候能够对“薪水”进行排序,而在另一个时刻你可以对“lastName”进行排序? – 2013-05-08 18:24:31
这是哪个平台? Java的? – 2013-05-08 18:40:45