Java的列表、集合、數(shù)組的添加一個元素各自用什么方法詳解
在Java中,列表(List)、集合(Set)和數(shù)組(Array)添加元素的方法有所不同,以下是具體說明及示例:
add() 添加元素
一、列表(List)
常用實現(xiàn)類包括ArrayList
和LinkedList
,核心方法為add()
:
末尾添加
add(Object o)
:List<String> list = new ArrayList<>(); list.add("Java"); // 添加元素到末尾
指定位置插入
add(int index, Object o)
:list.add(1, "Python"); // 在索引1處插入元素,原元素后移
批量添加
addAll(Collection<?> c)
或Collections.addAll()
:List<String> list2 = Arrays.asList("C++", "Go"); list.addAll(list2); // 批量添加集合元素
二、集合(Set)
常用實現(xiàn)類如HashSet
、TreeSet
,添加元素需滿足唯一性:
基本添加
add(Object o)
:Set<String> set = new HashSet<>(); set.add("Apple"); // 成功返回true,重復元素返回false
有序集合的添加
如TreeSet
會自動按自然順序排序:Set<Integer> sortedSet = new TreeSet<>(); sortedSet.add(3); sortedSet.add(1); // 最終順序為1, 3
對比總結
數(shù)據(jù)結構 | 添加方法 | 特點 |
---|---|---|
數(shù)組 | Arrays.copyOf() 或轉ArrayList | 固定長度,需手動擴容或轉換容器 |
列表(List) | add() 、addAll() | 支持動態(tài)擴容和指定位置插入 |
集合(Set) | add() | 元素唯一,自動去重,無序(TreeSet 有序) |
示例完整代碼
數(shù)組轉列表并添加元素:
int[] arr = {1, 2, 3}; List<Integer> list = new ArrayList<>(Arrays.asList(arr)); list.add(4); list.add(1, 99); // 插入到索引1處 System.out.println(list); // 輸出[1, 99, 2, 3, 4]
集合去重示例:
Set<String> cities = new HashSet<>(); cities.add("Beijing"); cities.add("Shanghai"); cities.add("Beijing"); // 重復元素不會被添加 System.out.println(cities); // 輸出[Beijing, Shanghai]
如需動態(tài)處理大量元素,推薦優(yōu)先使用ArrayList
(列表)或HashSet
(集合)。
三、樹形結構(Tree)
Java 標準庫未直接提供樹結構,但可通過 TreeSet
或 TreeMap
間接實現(xiàn)有序存儲:
TreeSet<Integer> treeSet = new TreeSet<>(); treeSet.add(5); // 自動按升序排列 treeSet.add(3); // 內部順序變?yōu)?, 5
四、隊列(Queue)
隊列遵循 先進先出(FIFO) 原則,常用實現(xiàn)類為 LinkedList
和 PriorityQueue
。
普通隊列
使用add()
或offer()
方法在隊尾添加元素:Queue<Integer> queue = new LinkedList<>(); queue.add(10); // 添加元素,隊列滿時拋異常 queue.offer(20); // 添加元素,隊列滿時返回false
優(yōu)先級隊列
PriorityQueue
根據(jù)元素自然順序或自定義比較器排序:Queue<Integer> pq = new PriorityQueue<>(); pq.add(5); // 添加元素并自動排序 pq.add(1); // 內部順序變?yōu)?, 5
五、鏈表(LinkedList)
LinkedList
同時實現(xiàn)了 List
和 Deque
,支持靈活插入:
- 任意位置插入
使用add(int index, E element)
:LinkedList<String> linkedList = new LinkedList<>(); linkedList.add(0, "First"); // 在索引0處插入 linkedList.add(1, "Second");
六、向量(Vector)
向量是線程安全的動態(tài)數(shù)組,使用 addElement()
或 add()
添加:
Vector<Integer> vector = new Vector<>(); vector.addElement(100); // 傳統(tǒng)方法 vector.add(200); // 與ArrayList兼容
其他數(shù)據(jù)結構的添加方法
Java 中除了列表(List)、集合(Set)和數(shù)組(Array)之外,還有其他多種數(shù)據(jù)結構支持元素的添加操作。以下是其他常見數(shù)據(jù)結構及其添加元素的示例和方法:
雙端隊列(Deque)
雙端隊列支持從兩端添加元素,實現(xiàn)類為 ArrayDeque
。
- 頭部/尾部添加
使用addFirst()
和addLast()
:Deque<String> deque = new ArrayDeque<>(); deque.addFirst("Front"); // 頭部添加 deque.addLast("End"); // 尾部添加
put()-映射(Map)
映射存儲鍵值對,常用實現(xiàn)類為 HashMap
和 TreeMap
。
- 添加鍵值對
使用put()
方法:Map<String, Integer> map = new HashMap<>(); map.put("Apple", 10); // 鍵不存在時新增 map.put("Banana", 20);
push() -棧(Stack)
棧遵循 后進先出(LIFO) 原則,實現(xiàn)類為 Stack
(已過時)或 Deque
模擬。
- 使用 Deque 模擬棧
Deque<Integer> stack = new ArrayDeque<>(); stack.push(1); // 壓棧 stack.push(2); // 棧頂元素變?yōu)?
數(shù)組(Array)
數(shù)組是固定長度的數(shù)據(jù)結構,添加元素通常需要創(chuàng)建新數(shù)組或使用動態(tài)容器:
直接賦值
通過索引直接賦值,但需確保索引有效且數(shù)組已初始化:int[] arr = new int[3]; arr[0] = 1; // 直接賦值到索引0的位置
擴容后添加
使用Arrays.copyOf()
創(chuàng)建新數(shù)組并添加元素:int[] arr = {1, 2, 3}; arr = Arrays.copyOf(arr, arr.length + 1); // 擴容 arr[arr.length - 1] = 4; // 添加新元素
轉換為ArrayList動態(tài)添加
將數(shù)組轉為ArrayList
,利用其add()
方法:String[] arr = {"a", "b"}; List<String> list = new ArrayList<>(Arrays.asList(arr)); list.add("c"); // 添加新元素 arr = list.toArray(new String[0]); // 轉回數(shù)組
總結
數(shù)據(jù)結構 | 添加方法 | 示例類 | 適用場景 |
---|---|---|---|
隊列(Queue) | add() , offer() | LinkedList | 任務調度、廣度優(yōu)先搜索 |
雙端隊列(Deque) | addFirst() , addLast() | ArrayDeque | 需要兩端操作的場景 |
映射(Map) | put() | HashMap | 鍵值對存儲、快速查找 |
棧(Stack) | push() | ArrayDeque | 函數(shù)調用棧、表達式求值 |
鏈表(LinkedList) | add(index, element) | LinkedList | 頻繁插入/刪除、中間操作 |
向量(Vector) | addElement() | Vector | 線程安全的動態(tài)數(shù)組需求 |
擴展說明:
- 堆(Heap):Java 中通過
PriorityQueue
實現(xiàn)堆結構,添加元素會自動調整堆結構。 - 并發(fā)集合:如
ConcurrentHashMap
和CopyOnWriteArrayList
,適用于多線程環(huán)境,但添加方法類似普通集合。
如果需要更具體的實現(xiàn)細節(jié)或線程安全方案,可進一步查看相關類的官方文檔或源碼實現(xiàn)。
到此這篇關于Java的列表、集合、數(shù)組的添加一個元素各自用什么方法的文章就介紹到這了,更多相關Java列表、集合、數(shù)組添加元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
微服務領域Spring Boot自動伸縮的實現(xiàn)方法
這篇文章主要給大家介紹了關于微服務領域Spring Boot自動伸縮的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-10-10java Map轉Object與Object轉Map實現(xiàn)代碼
這篇文章主要介紹了 java Map轉Object與Object轉Map實現(xiàn)代碼的相關資料,需要的朋友可以參考下2017-02-02java中@JSONField和@JsonProperty注解的使用說明及對比
@JSONField與@JsonProperty隸屬兩個不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說明及對比,感興趣的可以了解一下2023-11-11解決MyBatisPlus的updateBatchById()批量修改失效問題
這篇文章主要介紹了解決MyBatisPlus的updateBatchById()批量修改失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08