Java中数组以及集合
2019獨角獸企業重金招聘Python工程師標準>>>
java中數組:?數組在Java里是一種特殊類型,有別于普通的“類的實例”的對象。但實際數組也是一種對象類型,int[]a = new int[5] ?a是在java棧中分配的引用變量,類型是int[] 數組類型,指向在堆里面地址連續的實際數組對象。
在內存中,數組存儲在連續的區域內部,因為數組中每個元素的類型相同,則占用的內存大小也一致,所以在訪問數組中的元素時可以直接根據數組在內存中的起始位置以及下標來計算元素的位置,因此數組的訪問速度很高。數組必須要初始化才能使用,初始化之后JVM會自動分配默認值,引用變量默認值是null。
數組和集合的區別:
1》數組初始化之后大小固定,無法再改變,集合大小可以改變。
2》同一個數組只能存儲同一種數據類型(基本類型/引用類型).集合不考慮泛型可以存儲多種數據類型,集合是存儲對象的,所以基本類型不能放入集合,可以使用基本類型的包裝類型。
3》若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。
數組和集合之間進行轉化:
toArray():將集合轉化為數組。
Arrays.asList():將數組轉化為集合.
?
集合的體系結構
List、Set、Map是這個集合體系中最主要的三個接口。 List和Set繼承自Collection接口。 Map也屬于集合系統,但和Collection接口不同。
?
Set無序,不允許元素重復。HashSet和TreeSet是兩個主要的實現類。Set 只能通過游標來取值,并且值是不能重復的。
?
List有序且允許元素重復。ArrayList、LinkedList和Vector是三個主要的實現類。 ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的 LinkedList 是線程不安全的,底層是由鏈表實現的
?
Map 是鍵值對集合。其中key列就是一個集合,key不能重復,但是value可以重復。 HashMap、TreeMap和Hashtable是Map的三個主要的實現類。 HashTable 是線程安全的,不能存儲?null?值 HashMap 不是線程安全的,可以存儲?null?值
?
?
?
------------| Collection 單例集合的根接口
----------------| List ?如果是實現了List接口的集合類,具備的特點: 有序,可重復。?
-------------------| ArrayList ?ArrayList 底層是維護了一個Object數組實現的。 特點: 查詢速度快,增刪慢。
-------------------| LinkedList LinkedList 底層是使用了鏈表數據結構實現的, 特點: 查詢速度慢,增刪快。
-------------------| Vector(了解即可) ?底層也是維護了一個Object的數組實現的,實現與ArrayList是一樣的,但是Vector是線程安全的,操作效率低。
----------------| Set ?如果是實現了Set接口的集合類,具備的特點: 無序,不可重復。
-------------------| HashSet ?底層是使用了哈希表來支持的,特點: 存取速度快.?
-------------------| TreeSet ? 如果元素具備自然順序 的特性,那么就按照元素自然順序的特性進行排序存儲。
?
Collection接口的方法:
int size(); ? ? ? ? ? ??? ? boolean isEmpty(); ? ? ? ? ? ?? boolean contains(Object o); ? ? ? ? ??Iterator<E> iterator(); ? ? ? ? ? ? ???Object[] toArray(); ? ? ???boolean add(E e); ? ? ? ??? ? boolean remove(Object o); ? ? ??? ? boolean containsAll(Collection<?> c); ? ??? boolean addAll(Collection<? extends E> c); ? ? ? ??? boolean removeAll(Collection<?> c); ? ? ? ??
void clear();
?
http://blog.csdn.net/qq_33642117/article/details/52040345 ? ? ? ?set的講解
http://blog.csdn.net/qq_33642117/article/details/52049764 ? ? ? ?map的講解
轉載于:https://my.oschina.net/yzbty32/blog/1634632
總結
以上是生活随笔為你收集整理的Java中数组以及集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web前端----JavaScript的
- 下一篇: 移动端banner css3(@keyf