這是一類哪個集合框架整理對象
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