Java集合與數組區(qū)別簡介及相互轉換實例
數組Array和集合的區(qū)別:
(1)數組是大小固定的,并且同一個數組只能存放類型一樣的數據(基本類型/引用類型)
(2)JAVA集合可以存儲和操作數目不固定的一組數據。(3)若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。
聯(lián)系:使用相應的toArray()和Arrays.asList()方法可以回想轉換。
List和ArrayList的區(qū)別
1.List是接口,List特性就是有序,會確保以一定的順序保存元素.
ArrayList是它的實現(xiàn)類,是一個用數組實現(xiàn)的List.
Map是接口,Map特性就是根據一個對象查找對象.
HashMap是它的實現(xiàn)類,HashMap用hash表實現(xiàn)的Map,就是利用對象的hashcode(hashcode()是Object的方法)進行快速散列查找.(關于散列查找,可以參看<<數據結構>>)
2.一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
比如:Listlist=newArrayList();
這樣做的原因是list就相當于是一個泛型的實現(xiàn),如果想改變list的類型,只需要:
Listlist=newLinkedList();//LinkedList也是List的實現(xiàn)類,也是ArrayList的兄弟類
這樣,就不需要修改其它代碼,這就是接口編程的優(yōu)雅之處.
另外的例子就是,在類的方法中,如下聲明:
privatevoiddoMyAction(Listlist){}
這樣這個方法能處理所有實現(xiàn)了List接口的類,一定程度上實現(xiàn)了泛型函數.
3.如果開發(fā)的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現(xiàn)List,Map(或者Collection)來定制你的自定義類.
List,Set轉換為數組的方法
toArray函數有兩種形式,一種無參數,一種帶參數,注意帶參數形式中,要指明數組的大小。
程序代碼:
public void convertCollectionToArray() { List list = new ArrayList(); Object[] objectArray1 = list.toArray(); String[] array1 = list.toArray(new String[list.size()]); Set set = new HashSet(); Object[] objectArray2 = set.toArray(); String[] array2 = set.toArray(new String[set.size()]); }
反過來,數組轉換為List,Set。
Integer[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4}; // To convert an array into a Set first we convert it to a List. Next // with the list we create a HashSet and pass the list as the constructor. List list = Arrays.asList(numbers); Set set = new HashSet(list);
注意:對于int[]數組不能直接這樣做,因為asList()方法的參數必須是對象。應該先把int[]轉化為Integer[]。對于其他primitive類型的數組也是如此,必須先轉換成相應的wrapper類型數組。
int[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4}; int size = numbers.length; Integer[] array = new Integer[size]; for (int i = 0; i < numbers.length; i++) { Integer integer = numbers[i]; array[i] = integer; } List list = Arrays.asList(array);
總結
以上就是本文關于Java集合與數組區(qū)別簡介及相互轉換實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
SpringCloud實現(xiàn)灰度發(fā)布的方法步驟
本文主要介紹了SpringCloud實現(xiàn)灰度發(fā)布的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05SpringBoot整合WebSocket的客戶端和服務端的實現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合WebSocket的客戶端和服務端的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07完美解決Eclipse導入的項目上有個紅叉,但不影響項目運行的問題
這篇文章主要介紹了完美解決Eclipse導入的項目上有個紅叉,但不影響項目運行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01SpringBoot項目配置postgresql數據庫完整步驟(配置多數據源)
PostgreSQL是一種特性非常齊全的自由軟件的對象-關系型數據庫管理系統(tǒng)(ORDBMS),下面這篇文章主要給大家介紹了關于SpringBoot項目配置postgresql數據庫(配置多數據源)的相關資料,需要的朋友可以參考下2023-05-05Spring Boot集成MyBatis實現(xiàn)通用Mapper的配置及使用
關于MyBatis,大部分人都很熟悉。MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。這篇文章主要介紹了Spring Boot集成MyBatis實現(xiàn)通用Mapper,需要的朋友可以參考下2018-08-08mybatis如何通過接口查找對應的mapper.xml及方法執(zhí)行詳解
這篇文章主要給大家介紹了利用mybatis如何通過接口查找對應的mapper.xml及方法執(zhí)行的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。2017-06-06