java中的集合類: Java集合類提供了一套設計良好的支持對一組對象進行操作的接口和類。Java集合類里面最基本的接口有: · Collection:代表一組對象,每一個對象都是它的子元素。 · Set:不包含重復元素的Collection。 · List:有順序的collection,并且可以包含重復元素。 · Map:可以把鍵(key)映射到值(value)的對象,鍵不能重復。 .數組(Array)和列表(ArrayList)有什么區別?什么時候應該使用Array而不是ArrayList? 下面列出了Array和ArrayList的不同點: · Array可以包含基本類型和對象類型,ArrayList只能包含對象類型。 · Array大小是固定的,ArrayList的大小是動態變化的。 · ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 · 對于基本類型數據,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。 ArrayList和LinkedList有什么區別? ArrayList和LinkedList都實現了List接口,他們有以下的不同點: · ArrayList是基于索引的數據接口,它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問。與此對應,LinkedList是以元素列表的形式存儲它的數據,每一個元素都和它的前一個和后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復雜度是O(n)。 · · 相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。 · · LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。 · · HashSet和TreeSet有什么區別? · · · HashSet是由一個hash表來實現的,因此,它的元素是無序的。add(),remove(),contains()方法的時間復雜度是O(1)。 · 另一方面,TreeSet是由一個樹形的結構來實現的,它里面的元素是有序的。因此,add(),remove(),contains()方法的時間復雜度是O(logn)。 · · Comparable和Comparator接口是干什么的?列出它們的區別。 Java提供了只包含一個compareTo()方法的Comparable接口。這個方法可以個給兩個對象排序。具體來說,它返回負數,0,正數來表明輸入對象小于,等于,大于已經存在的對象。 Java提供了包含compare()和equals()兩個方法的Comparator接口。compare()方法用來給兩個輸入參數排序,返回負數,0,正數表明第一個參數是小于,等于,大于第二個參數。equals()方法需要一個對象作為參數,它用來決定輸入參數是否和comparator相等。只有當輸入參數也是一個comparator并且輸入參數和當前comparator的排序結果是相同的時候,這個方法才返回true。
|