java 集合集合是對象的容器,實現(xiàn)了對對象的常用的操作,類似數(shù)組功能 。和數(shù)組的區(qū)別:
- 數(shù)組長度固定,集合長度不固定
- 數(shù)組可以存儲基本類型和引用類型,集合只能存儲引用類型
- 使用時需要導(dǎo)入類

文章插圖
Collection 繼承 Iterable 接口,實現(xiàn)子類可放多個 object 元素,Collection 接口無直接實現(xiàn)類,是通過子類接口 Set 與 List 實現(xiàn) 。是單列集合的頂層實現(xiàn)接口,他表示一組對象,這些對象也稱 Collectioin 的元素 。JDK 不提供此接口的任意直接實現(xiàn),他提供更具體的子接口(如 Set 和 List)的實現(xiàn) 。
Listlist 集合是 collection 的子接口,元素有序,且添加順序與取出順序一致,支持索引 。
List 是一個接口,繼承自 Collection 接口 。
List 是一個有序集合,用戶可以精確的控制列表中的每一個元素的插入位置 。可以通過整數(shù)索引訪問元素,并搜索列表中的元素 。與 Set 集合不同,列表通常允許重復(fù)元素 。List 集合特點:
- 有序
- 可重復(fù)
- add(index,E)指定位置添加元素
- remove(index)刪除指定位置的元素
- set(index,E)修改指定位置的元素
- get(index)獲取指定位置的元素
- List 集合的幾種常用方法
List<> list = new ArraryList();list.add(obj)//末尾添加元素list.add(index,obj)//在指定位置添加元素list.remove(obj)//刪除元素list.indexof(obj)//返回第一次出現(xiàn)的位置list.lastIndexOf(obj)//返回最后出現(xiàn)的位置list.set(indes,obj)//設(shè)置指定位置的元素,相當(dāng)于替換list.get(index)//返回指定位置的元素list.contains(obj)//查找當(dāng)前元素是否存在 。list.size()//返回list的長度list.clear()//清空集合list.isEmpty()//判斷是否為空list.removeAll(list)//刪除多個元素 。ArraylistArrarylist 的底層維護了一個 Object 類型的 elementData 數(shù)組,其底層就是一個數(shù)組 。ArrayList 集合:可調(diào)整大小的數(shù)組的實現(xiàn) List 接口 。實現(xiàn)所有可選列表操作,并允許所有元素,包括 null。
底層是數(shù)組,查詢快,增刪慢于 LinkedList 集合
- 無參構(gòu)造擴容若使用無參構(gòu)造,初始的 elementData 為 0,第一次添加元素,擴容為 10,若再次擴容,則擴容為 elementData 的 1.5 倍 。0->10->15->22....
- 有參構(gòu)造擴容若使用 new Arrarylist(int n)初始化數(shù)組,則為指定大小,擴容時也是按照 elementData 的 1.5 倍
Vector 是線程同步的,是線程安全的,開發(fā)中若需要線程同步,用 Vextor 集合 。
LinkedListLinked 的意思是鏈接,字面意思來看,該集合是一個鏈表,事實也正是如此,LinkedList 的底層是實現(xiàn)了雙向鏈表和雙端隊列 。可以添加任意的重復(fù)元素,包括 null 。由于是鏈表,所以不需要擴容,增刪效率高 。
//鏈表實現(xiàn)演示public class Node {private Object item;//對象public Node first;public Node last;public Node(Object name) {this.item = name;}}LinkedList 集合特有功能
文章插圖
LinkedList<String> link = new LinkedList<String>();link.add("hello");link.add("world");link.add("hello world");//添加元素link.addFirst("fist");link.addLast("last");System.out.println(link);System.out.println("------------------");//獲取元素System.out.println(link.getFirst());System.out.println(link.getLast());System.out.println("------------------");//刪除元素link.removeFirst();link.removeLast();System.out.println(link);System.out.println("------------------");
經(jīng)驗總結(jié)擴展閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4 Java I/O:AIO和NIO中的Selector
- 2023年10月5日入土好嗎 2023年10月5日入土吉日一覽表
- 2023年2月8日適合入土嗎 2023年2月8日入土好嗎
- 2023年10月6日入土行嗎 2023年10月6日入土黃道吉日
- 3 Java I/O:NIO中的Buffer
- 2023年農(nóng)歷八月廿三入土吉日 2023年10月7日入土吉日一覽表
- HILINK海聯(lián)品牌集合店 : 雅詩蘭黛各款面霜區(qū)別
- 2023年10月8日入土行嗎 2023年10月8日入土好嗎
- 一 JPA入門學(xué)習(xí)集合springboot
- Java程序員必會Synchronized底層原理剖析
