Java基礎教程:Java基礎知識之List接口

2020-12-14 黑馬程式設計師

List接口

我們掌握了Collection接口的使用後,再來看看Collection接口中的子類,他們都具備那些特性呢?接下來,我們一起學習Collection中的常用幾個子類(java.util.List集合、java.util.Set集合)。

List接口介紹

java.util.List接口繼承自Collection接口,是單列集合的一個重要分支,習慣性地會將實現了List接口的對象稱為List集合。在List集合中允許出現重複的元素,所有的元素是以一種線性方式進行存儲的,在程序中可以通過索引來訪問集合中的指定元素。另外,List集合還有一個特點就是元素有序,即元素的存入順序和取出順序一致。

看完API,我們總結一下:

List接口特點:

它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麼集合中,元素的存儲就是按照11、22、33的順序完成的)。它是一個帶有索引的集合,通過索引就可以精確的操作集合中的元素(與數組的索引是一個道理)。集合中可以有重複的元素,通過元素的equals方法,來比較是否為重複的元素。tips:我們在基礎班的時候已經學習過List接口的子類java.util.ArrayList類,該類中的方法都是來自List中定義。

List接口中常用方法

List作為Collection集合的子接口,不但繼承了Collection接口中的全部方法,而且還增加了一些根據元素索引來操作集合的特有方法,如下:

public void add(int index, E element): 將指定的元素,添加到該集合中的指定位置上。public E get(int index):返回集合中指定位置的元素。public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。public E set(int index, E element):用指定元素替換集合中指定位置的元素,返回值的更新前的元素。List集合特有的方法都是跟索引相關,我們在基礎班都學習過。

tips:我們之前學習Colletion體系的時候,發現List集合下有很多集合,它們的存儲結構不同,這樣就導致了這些集合它們有各自的特點,供我們在不同的環境下使用,那麼常見的數據結構有哪些呢?在下一章我們來介紹:

ArrayList集合

java.util.ArrayList集合數據存儲的結構是數組結構。元素增刪慢,查找快,由於日常開發中使用最多的功能為查詢數據、遍歷數據,所以ArrayList是最常用的集合。

許多程式設計師開發時非常隨意地使用ArrayList完成任何需求,並不嚴謹,這種用法是不提倡的。

LinkedList集合

java.util.LinkedList集合數據存儲的結構是鍊表結構。方便元素添加、刪除的集合。

LinkedList是一個雙向鍊表,那麼雙向鍊表是什麼樣子的呢,我們用個圖了解下

實際開發中對一個集合元素的添加與刪除經常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。這些方法我們作為了解即可

public void addFirst(E e):將指定元素插入此列表的開頭。public void addLast(E e):將指定元素添加到此列表的結尾。public E getFirst():返回此列表的第一個元素。public E getLast():返回此列表的最後一個元素。public E removeFirst():移除並返回此列表的第一個元素。public E removeLast():移除並返回此列表的最後一個元素。public E pop():從此列表所表示的堆棧處彈出一個元素。public void push(E e):將元素推入此列表所表示的堆棧。public boolean isEmpty():如果列表不包含元素,則返回true。LinkedList是List的子類,List中的方法LinkedList都是可以使用,這裡就不做詳細介紹,我們只需要了解LinkedList的特有方法即可。在開發時,LinkedList集合也可以作為堆棧,隊列的結構使用。

public class Demo04LinkedList {public static void main(String[] args) {method4();}/* * void push(E e): 壓入。把元素添加到集合的第一個位置。 * E pop(): 彈出。把第一個元素刪除,然後返回這個元素。 */public static void method4() { //創建LinkedList對象 LinkedList<String> list = new LinkedList<>(); //添加元素 list.add("達爾文"); list.add("達文西"); list.add("達爾優"); System.out.println("list:" + list); //調用push在集合的第一個位置添加元素 //list.push("愛迪生"); //System.out.println("list:" + list);//[愛迪生, 達爾文, 達文西, 達爾優] //E pop(): 彈出。把第一個元素刪除,然後返回這個元素。 String value = list.pop(); System.out.println("value:" + value);//達爾文 System.out.println("list:" + list);//[達文西,達爾優]}/* * E removeFirst():刪除第一個元素 * E removeLast():刪除最後一個元素。 */public static void method3() { //創建LinkedList對象 LinkedList<String> list = new LinkedList<>(); //添加元素 list.add("達爾文"); list.add("達文西"); list.add("達爾優"); //刪除集合的第一個元素// String value = list.removeFirst();// System.out.println("value:" + value);//達爾文// System.out.println("list:" + list);//[達文西,達爾優] //刪除最後一個元素 String value = list.removeLast(); System.out.println("value:" + value);//達爾優 System.out.println("list:" + list);//[達爾文, 達文西]}/* * E getFirst(): 獲取集合中的第一個元素 * E getLast(): 獲取集合中的最後一個元素 */public static void method2() { //創建LinkedList對象 LinkedList<String> list = new LinkedList<>(); //添加元素 list.add("達爾文"); list.add("達文西"); list.add("達爾優"); System.out.println("list:" + list); //獲取集合中的第一個元素 System.out.println("第一個元素是:" + list.getFirst()); //獲取集合中的最後一個元素怒 System.out.println("最後一個元素是:" + list.getLast());}/* * void addFirst(E e): 在集合的開頭位置添加元素。 * void addLast(E e): 在集合的尾部添加元素。 */public static void method1() { //創建LinkedList對象 LinkedList<String> list = new LinkedList<>(); //添加元素 list.add("達爾文"); list.add("達文西"); list.add("達爾優"); //列印這個集合 System.out.println("list:" + list);//[達爾文, 達文西, 達爾優] //調用addFirst添加元素 list.addFirst("曹操"); System.out.println("list:" + list);//[曹操, 達爾文, 達文西, 達爾優] //調用addLast方法添加元素 list.addLast("大喬"); System.out.println("list:" + list);//[曹操, 達爾文, 達文西, 達爾優, 大喬]}}

相關焦點

  • Java基礎教程:java反射機制教程
    這時候java語言在設計的時候為我們提供了一個機制,就是反射機制,他能夠很方便的去解決我們的問題。 二、深入分析java反射機制 1、獲取Class類 在java中萬事萬物皆對象,Useruser=newUser()一行代碼我們知道了user是User類的實例對象,通過Studentstu=newStudent()我們知道了
  • Java基礎知識——第一天
    包相當於電腦中的磁碟,用於管理規範程序,讓程序不會雜亂無章,方便程序查找管理,特別是程序很大時,包名一定是小寫的,這是java語言的規範2、第二條語句public class MyJavaApp,這是創建類的語句,public是Java的關鍵字,是java中的其中一個訪問權限修飾符,用於修飾類/
  • Java丨List與List的區別何在?
    導讀泛型是Java最基礎的語法之一
  • 給Java新手的一些建議——Java知識點歸納(Java基礎部分)
    JVM相關(包括了各個版本的特性)對於剛剛接觸Java的人來說,JVM相關的知識不一定需要理解很深,對此裡面的概念有一些簡單的了解即可。不過對於一個有著3年以上Java經驗的資深開發者來說,不會JVM幾乎是不可接受的。JVM作為java運行的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。
  • 泛型Java程式設計師必備基礎
    前言整理了Java泛型的相關知識,算是比較基礎的,希望大家一起學習進步。一、什麼是Java泛型Java 泛型(generics)是 JDK 5 中引入的一個新特性,其本質是參數化類型,解決不確定具體對象類型的問題。
  • Java 基礎知識總結(一)之Java 概述
    斷續了文章的更新,今天開始為大家講解Java基礎。希望大家多多支持!寫代碼1,明確需求。我要做什麼?2,分析思路。我要怎麼做?1,2,3。3,確定步驟。每一個思路部分用到哪些語句,方法,和對象。Java Platform Enterprise Edition,開發企業環境下的應用程式,主要針對web 程序開發;JAVASE:Java Platform Standard Edition,完成桌面應用程式的開發,是其它兩者的基礎;JAVAME:Java Platform Micro Edition,開發電子消費產品和嵌入式設備
  • Java面試總結之Java基礎
    無論是工作多年的高級開發人員還是剛入職場的新人,在換工作面試的過程中,Java基礎是必不可少的面試題之一。能不能順利通過面試,拿到自己理想的offer,在準備面試的過程中,Java基礎也是很關鍵的。對於工作多年的開發人員來說,Java基礎往往是會被大家所忽略的,但在面試的過程中,確是必不可少的問題。在這篇文章裡就來為大家總結一下經常會被問到的Java基礎題。
  • Java基礎知識:集合之ArrayList
    其底層數據結構依然是數組,它實現了List<E>, RandomAccess, Cloneable, java.io.Serializable接口,其中RandomAccess代表了其擁有隨機快速訪問的能力,ArrayList可以以O(1)的時間複雜度去根據下標訪問元素。
  • java之小小的基礎知識點
    一.如何編寫java程序呢?1.新建一個java工程2.新建一個包名 新建一個java類 包的命民 :域名的反向 www.百度.com com.百度.www3.編寫內容4.在類中的空白處 右擊運行java 選擇run as java application詳情請參考:
  • Java基礎教程:Java泛型概述及應用(Java難點)
    就要把迭代出來的對象轉成String類型 String str = (String) it.next(); System.out.println(str.length()); }}}程序在運行時發生了問題java.lang.ClassCastException
  • Java基礎之反射篇
    Java基礎之反射篇「Hello,大家好!我是老醜。今天給大家帶來的知識點是反射」1. 反射是什麼?反射(Reflection),它允許在運行中的Java程序獲取自身的信息,並且可以操作類或者對象的內部屬性。2. 反射可以做什麼?3.
  • 程式設計師:java集合介紹,帶你深入理解list集合
    在Java中,集合類通常存在於java.util包中。Java集合主要由2大體系構成,分別是Collection體系和Map體系,其中Collection和Map分別是2大體系中的頂層接口。Collection主要有三個子接口,分別為List(列表)、Set(集)、Queue(隊列)。其中,List、Queue中的元素有序可重複,而Set中的元素無序不可重複。
  • Java之FileFilter過濾器的使用與及原理的簡單介紹
    「創作開運禮」Java之使用遞歸進行文件搜索,這次小編要介紹的是過濾器,我們可以使用過濾器來遍歷文件夾以及裡面的子文件夾還有相對應的文件1.File[] listFiles(FileFilter filter)java.io.FileFilter接口:用於抽象路徑名(File對象)的過濾器。
  • java 基礎 之 集合 Map 與Set 與Queue
    Queue接口窄化了對LinkedList的方法的訪問權限,以使得只有恰當的方法才可使用。使用LinkedList向上轉型構造一個Queueimport java.util.下面是一個示例,展示了大多數實用工具程序的基本用法:// collectiontopics/Utilities.java// Simple demonstrations of the Collections utilitiesimport java.util.
  • Java程式設計師進階:Java4大核心基礎必備知識點
    本文總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點,不要一味地照著書本敲代碼,而不去理解。
  • java面試題總結:java的接口類和抽象類的特點
    java的接口類和抽象類的特點java中抽象類的特點:
  • Java簡潔之道:如何優雅地玩轉List
    Foreach遍歷list對於此問題,Java 8 添加了一個新的API稱為流Stream,讓代碼更高效、更簡潔。Stream示意圖典型的stream使用示例java 8,為集合提供串行流(stream)和並行流(parallelStream)兩種生成流的方法。
  • Java並發編程之支持並發的list集合你知道嗎
    Java並發編程之-list集合的並發.我們都知道Java集合類中的arrayList是線程不安全的。那麼怎麼證明是線程不安全的呢?怎麼解決在並發環境下使用安全的list集合類呢?本篇是《凱哥(凱哥Java:kagejava)並發編程學習》系列之《並發集合系列》教程的第一篇:本文主要內容:怎麼證明arrayList不是線程安全的?怎麼解決這個問題?以及遇到問題解決的四個步驟及從源碼來分析作者思路。一:怎麼證明arrayList在並發情況下是線程不安全的呢?
  • 你真的了解java的lambda嗎?- java lambda用法與源碼分析
    Thread的構造函數接收的是一個Runnable接口對象,而我們這裡的用法相當於是把一個函數當做接口對象傳遞進去了,這點理解很關鍵,這正是函數式編程的含義所在。我們注意到Runnable有個註解 @FunctionalInterface,它是jdk8才引入,它的含義是函數接口。
  • java基礎教程:Collection集合,Collection 常用API
    集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有什麼區別呢?數組的長度是固定的。集合的長度是可變的。數組中存儲的是同一類型的元素,可以存儲任意類型數據。集合存儲的都是引用數據類型。如果想存儲基本類型數據需要存儲對應的包裝類型。