1. 程式人生 > >Java 集合之List 集合的新增方法順序分析以及add和addAll區別

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 集合新增方法順序分析以及addaddAll區別

本篇主要探討論證以下兩個問題: 一、List集合有一個特點就是元素有序,即元素的存入順序與其取出順序一致。 二、List集合的新增方法主要有add()和addAll()。那兩者的區別在哪呢 add()是將傳入的的引數作為當前 List 中d的一個專案(Item)來儲存,即

Java 集合List 集合的刪除方法順序分析以及removeremoveAll區別

在上一篇 《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介面分析addoffer區別,removepoll方法到底啥區別

往佇列中新增元素有兩個方法,分佈是add和offer方法,兩者的入參和返回值都一樣,或許很多同學都奇怪,為什麼,要有這兩個功能類似(都是新增元素),但方法名不一樣的方法,看看原始碼的註釋 以下為Queue介面中方法定義: ``` public interface Queue<E

JavaList集合遍歷的幾種方法

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介面ArrayListLinkedList遍歷效能問題

ArrayList這個類是實現了RandomAccess介面的,RandomAccess介面和Serializable介面一樣都是沒有方法或者欄位的,像是一個標誌,RandomAccess介面文件說明的是:Marker interface used by <tt>