2012-07-23 69 views
1

Sun已經提供了TreeSetTreeMap但沒有TreeList。他們提供了一個實用程序Collections.sort()來對列表進行排序。當他們提供Sorted Map和Set時,他們沒有提供Sorted List的原因是什麼?爲什麼沒有SortedList

背後是否有任何特定的原因?

我正在爲SCJP做準備,所以在通過GenericsCollections時,我有這個疑問。任何人都可以澄清。

+0

請閱讀http://stackoverflow.com/faq#dontask – vascowhite 2012-07-23 06:13:58

+0

他們提供了自定義比較器以及二進制搜索,因此,您只需生成一個SortedList類即可。 – Lopina 2012-07-23 06:15:45

+0

而'TreeList'並不真正保證實現,因爲它不會比一般的'ArrayList'快,除非在中間插入並刪除(這是很少執行的,如果你正在做很多這些,你應該使用Set :) – Strelok 2012-07-23 06:19:00

回答

4

List API中的第一行表示它是一個有序集合(也稱爲序列)。如果對列表排序,則無法維護訂單,因此Java中沒有TreeList。就像你剛纔提到的那樣,你可能需要從外部對它進行分類。
作爲API稱Java列表接到序列啓發,看到了順序性http://en.wikipedia.org/wiki/Sequence_(mathematics)

這並不意味着你不能對列表進行排序,但Java的嚴格的他的定義,不提供的排序版本列表默認情況下。