Java 集合之List 集合的新增方法順序分析以及add和addAll區別
本篇主要探討論證以下兩個問題:
一、List集合有一個特點就是元素有序,即元素的存入順序與其取出順序一致。
二、List集合的新增方法主要有add()和addAll()。那兩者的區別在哪呢
add()是將傳入的的引數作為當前 List 中d的一個專案(Item)來儲存,即使你傳入一個 list 也只會另當前的List集合增加 1 個元素。
addAll()是傳入一個List,將此前List集合中的所有元素加入到當前的 List 中,當前 List 集合會增加的元素個數是傳入的 List 的大小
一、這裡舉例 向 ArrayList集合中加入一些元素。觀察 list 在重複位置新增元素,最後的結果如何。
public class TestList{ public static void main(String args[]){ // 結果為 Hello Java Learn World List list = new ArrayList(); // 因為 List集合輸出有序且不重複 list.add("Hello"); list.add("World"); list.add(1,"Learn"); list.add(1,"Java"); printList(list); } public static void printList(List list){ //printList()輸出方法 傳入List物件 //1 System.out.println("集合結果輸出:"); for(int i = 0; i< list.size();i++) { System.out.print(list.get(i)+" "); } } }
觀察新增元素的程式碼塊:
list.add("Hello"); // 1
list.add("World"); // 2
list.add(1,"Learn"); // 3
list.add(1,"Java"); // 4
這裡注意,1、2處程式碼分別在集合的第一位和第二位加入了Hello 和World,
3 處程式碼在索引為1 的位置加入了Learn,此時加入順序變成了 Hello、Learn、World
同理,4 處程式碼又在當前集合中索引為 1 的位置加入了 Java。
最後之前元素向後推移。輸出結果為 :Hello Java Learn World
結論:可以發現存入順序與取出順序一致,且若採用無下標的新增方法,後加入的元素是在當前 List 集合的末尾新增。
若採用帶下標新增,則下標後的元素依次後移。順序不變。
二、本例中在上邊類的基礎上加入一個新的list集合,定義為 list2。
將list 集合中的元素分別用 add()和addAll()方法加入到list2 的集合中。並分別輸出結果,返回其長度。
add()方法分析:
對於集合的新增方法 add(),有兩種方式。
一種是 直接寫要加入的元素物件,另一種是前邊寫上下標位置,後邊寫元素物件。
語法 1 add(Object element )
public class TestList{
public static void main(String args[]){ // 結果為 Hello Java Learn World
List list = new ArrayList(); // 因為 List集合輸出有序且不重複
list.add("Hello");
list.add("World");
list.add(1,"Learn");
list.add(1,"Java");
printList(list); // 輸出 list 集合的遍歷結果
ArrayList list2 = new ArrayList(); //新定義一個list2 集合物件
//測試區,這是開始位置,
list2.add(list);
// 這是結束位置,以下程式碼塊將在此處進行代入
printList2(list2); // 輸出 list2 集合的遍歷結果
}
public static void printList(List list){ //printList()輸出方法 傳入list物件
System.out.println("list 迴圈輸出:");
for(int i = 0; i< list.size();i++) {
System.out.print(list.get(i)+" ");
}
System.out.println();
}
public static void printList2(List list2) { //printList2()輸出方法 傳入list2物件
System.out.println("\nlist2 迴圈輸出:");
for (int i = 0; i < list2.size(); i++) {
System.out.print(list2.get(i) + " ");
}
System.out.println("\nlist2集合的長度為:"+list2.size());
}
}
1、上例中 採用的是 add( ) 方法將list 物件加入其中 list2 中,測試區程式碼即為上例中程式碼
list2.add(list);
輸出結果為:
語法 2 add(int index , Object element) 將元素 element 插入到List集合中 index 處
2、若是採用 下標方式的add()方法進行新增,當前list2 集合中程式碼為空。我們先在list2 中加入兩個元素。
再在下標為 1 的位置新增進 list 物件
測試區程式碼為
list2.add("One");//先後插入兩個元素
list2.add("Two");
list2.add(1,list);
此時輸出結果為:
可以觀察出 通過下標新增方法將 list集合物件新增到了下標為0 的One 元素的後邊。即當前list物件在list2中下標為1.新增成功
由上邊兩個例子可以看出 add()方法傳入的 list 只會給當前 list 中增加 1 個元素
即傳入的引數被當中一個元素來處理了 ,會以陣列形式顯示。
----------------------------
接下來是addAll()方法
addAll()方法用於將指定collection中的所有元素新增到列表尾部。
語法1 addAll ( Collection c )
測試區程式碼為
list2.addAll(list);
輸出結果為:
語法2 addAll ( int index , Collection c ) 將集合 c 所包含的元素插入到 list集合的 index 處
index:用於指定collection 的第一個元素所插入索引的位置
c:用於指定要將全部元素新增到列表中的collection
測試區程式碼為:
list2.add("One");
list2.add("Two");
list2.addAll(1,list);
輸出結果為:
由上邊兩個例子可以看出
addAll()方法傳入的 list 會給當前 list 中增加 與傳入的 list 相同個數的元素,結果不會以陣列形式顯示。
相關推薦
Java 集合之List 集合的新增方法順序分析以及add和addAll區別
本篇主要探討論證以下兩個問題: 一、List集合有一個特點就是元素有序,即元素的存入順序與其取出順序一致。 二、List集合的新增方法主要有add()和addAll()。那兩者的區別在哪呢 add()是將傳入的的引數作為當前 List 中d的一個專案(Item)來儲存,即
Java 集合之List 集合的刪除方法順序分析以及remove和removeAll區別
在上一篇 《Java 集合之List 集合的新增方法順序分析以及add和addAll區別》中已經分析過 對於List集合順序從前到後的分析論證,這裡將不再詳細分析 remove()方法的順序 此篇將就 remove()和removeAll()的區別分析 java的 Li
java基礎筆記(9)----集合之list集合
類型安全 sta clas bsp i++ 效率 contains 有序 void 集合 對於集合的理解,集合是一個容器,用於存儲和管理其它對象的對象 集合,首先了解所有集合的父接口----collection 特點:存儲任意object元素 方法 boolean add(
Java基礎之List集合(包含JUC)學習程序(一)
Java中重要的集合包主要有Collection和map 複習collectioon,主要是List,Queue和Set List 首先要知道List是一個介面,繼承自collection 其中定義了是元素有序並且可以重複的集合,被稱為序列,並且List允許存放
Queue介面分析:add和offer區別,remove和poll方法到底啥區別
往佇列中新增元素有兩個方法,分佈是add和offer方法,兩者的入參和返回值都一樣,或許很多同學都奇怪,為什麼,要有這兩個功能類似(都是新增元素),但方法名不一樣的方法,看看原始碼的註釋 以下為Queue介面中方法定義: ``` public interface Queue<E
Java之List集合遍歷的幾種方法
package cn.com.javatest.collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Java之List集合遍歷的幾種方法 * * @au
Java集合之List遍歷找到匹配元素刪除方法總結
問題:在我們使用java開發的過程中可能會遇到這樣的問題,刪除List集合中與已知元素 相同的所有元素; 比如下面這個需求: 刪除List集合中字串為“edf”的所有記錄 案例: 方案一:你可能回想到使用forEach遍歷,找到匹配的
JAVA-初步認識-常用對象API(集合框架-List集合的常用方法)
技術分享 java 修改 class cti 不同 bubuko span 接下來 一. 現在重點學習一下List,List是Collection的子接口,那麽Collection的方法,List都具備,共性方法就不講述了。 講述一下List中特有的方法,這些特有方法的共性
java遍歷List集合的三種方法
ring 方式 叠代器 AR array AD 循環 class ray List<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("cc
Java集合之List常見操作
collect 定位 lastindex 索引 hot move 值對象 安排 ast 一.定義集合(Collection)是Java存儲對象常見的一種方式;集合中的各個對象最終存儲在類似數組[]中。那麽,為什麽有了數組還要用集合呢?因為,集合中的長度可變,所以不用一開始就
Java關於拼接list集合的順序
我的目標是想要把list1加入到list後面,但是誰寫在括號裡面突然有點傻了。其實是很簡單跟add一樣,自然是括號裡面的放在主list後面了。但是還是做了一個驗證。 package com.yunhe; import java.util.ArrayList; import java.u
thinking in java (十七) ----- 集合之List總結
List概括 首先回顧一下關係圖 Lsit是一個介面,繼承與Collection介面,它代表的是有序的佇列 AbstractList是一個抽象類,它繼承於AbstractCollection,AbstractList實現List介面中除了size(),get(
Java:去除List集合中的重複值(四種好用的方法)
最近專案中需要對list集合中的重複值進行處理,大部分是採用兩種方法,一種是用遍歷list集合判斷後賦給另一個list集合,一種是用賦給set集合再返回給list集合。 但是賦給set集合後,由於set集合是無序的,原先的順序就打亂了。所以我又想著能不能用set的特性進行去重又不打亂順序
java集合之List總結
主要驗證一下List集合的常用操作: list中新增,獲取,刪除元素; 新增方法是:.add(e); 獲取方法是:.get(index); 刪除方法是:.remove(index); 按照索引刪除; .remove(Object o); 按照元素內容刪除;
Java基礎系列(四十一):集合之List
前言 List是繼承自Collection的一個子介面,它提供了一個有序的集合,在這個集合中我們可以使用索引去獲取集合中的值,同時,我們也可以通過迭代器去訪問集合中的元素,第一種方法被稱為隨機訪問,因為我們可以按照任意的順序去訪問元素,而使用迭代器就必須順序的去訪問元素。 結構圖
java-se-集合之List
List:列表 此介面對應的實現類的特點都是:有序的、可重複的(重複與否與元素的equals()方法有關) 常用方法: void add(int index, E element)
在java中對LIst集合的兩種排序方法(即sort的使用方法)
List集合的排序: java提供了兩種排序方式,分別是Collections.sort(List)和Collections.sort(List,Commparator),下面就這兩種方法的使用做詳細的說明: -Collections.sort(List); sort的引數是一
java集合系列——List集合之ArrayList介紹(二)
一:List概述 List是 java.util包下面的類,從 java集合系列——java集合概述(一) 中可以知道,List繼承了Collection 介面! List本身也是一個介面,它的實現有ArrayList 、LinkedList、Vector和CopyOn
java基礎複習---集合之List--11.16
Java容器類類庫的用途是儲存物件,並將其劃分為兩個不同的概念。 1)、Collection。一個獨立元素的序列,這些元素都服從一條或多條規則。List必須按照插入的順序儲存元素。而Set不能有重複的元素。Queue按照排隊規則來確定物件產生的順序(通常與物件插入的順序相同
java集合學習之List(二)隨機訪問RandomAccess介面和ArrayList和LinkedList遍歷效能問題
ArrayList這個類是實現了RandomAccess介面的,RandomAccess介面和Serializable介面一樣都是沒有方法或者欄位的,像是一個標誌,RandomAccess介面文件說明的是:Marker interface used by <tt>