欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java list用法示例詳解

 更新時(shí)間:2014年01月14日 15:28:01   投稿:zxhpj  
java中可變數(shù)組的原理就是不斷的創(chuàng)建新的數(shù)組,將原數(shù)組加到新的數(shù)組中,下文對(duì)java list用法做了詳解

|--List:元素是有序的(怎么存的就怎么取出來,順序不會(huì)亂),元素可以重復(fù)(角標(biāo)1上有個(gè)3,角標(biāo)2上也可以有個(gè)3)因?yàn)樵摷象w系有索引,
  |-- ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)(數(shù)組長(zhǎng)度是可變的百分之五十延長(zhǎng))(特點(diǎn)是查詢很快,但增刪較慢)線程不同步
  |-- LinkedList:底層的數(shù)據(jù)結(jié)構(gòu)是鏈表結(jié)構(gòu)(特點(diǎn)是查詢較慢,增刪較快)
  |-- Vector:底層是數(shù)組數(shù)據(jù)結(jié)構(gòu) 線程同步(數(shù)組長(zhǎng)度是可變的百分之百延長(zhǎng))(無論查詢還是增刪都很慢,被ArrayList替代了)

List:特有的方法,凡是可以操作角標(biāo)的方法都是該體系特有的方法

boolean add(int index, E element)
boolean addAll(index,Collection)

public static void List_add(){
   ArrayList a1 = new ArrayList();
   a1.add("java");
   a1.add("php");//List集合中的元素可以重復(fù)
  a1.add(".net");
   System.out.println("原集合:"+a1);
   a1.add(1, "Flash");
   a1.add(0, "ps");  
   System.out.println(a1);
    
  ArrayList a2 = new ArrayList();
  a2.add("javascript");
  a2.add("3dMax");
  a2.add("IBM");
    
  a1.addAll(0, a2);
  System.out.println(a1);
}

刪除指定位置的元素

boolean remove(int index)
 public static void List_remove(){
   ArrayList a1 = new ArrayList();
   a1.add("javascript");
   a1.add("php");
   a1.add("flash");
   System.out.println("原集合:"+a1);
     
   a1.remove(0);
   System.out.println(a1);
}

修改指定角標(biāo)的元素  set(int index, E element)  返回的是修改的那個(gè)元素

 public static void List_set() {
   ArrayList a1 = new ArrayList();
   a1.add("javascript");
   a1.add("php");
   a1.add(".net");
   System.out.println("原集合:"+a1);
     
   a1.set(1, "falsh");
   System.out.println(a1);
}

get(int index)   返回列表中指定位置的元素
subList(int fromIndex, int toIndex)    返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分元素。

public static void List_get() {
   ArrayList a1 = new ArrayList();
   a1.add("java");
   a1.add("php");
   a1.add("flash");
     
   System.out.println(a1.get(0));//獲取指定角標(biāo)的元素,有了該方法就可以遍歷該集合中的所有元素
     
   System.out.println(a1.subList(1, 3));//獲取集合中某一部分的元素,包含頭不包含尾
}

List集合特有的迭代器:ListIterator(是Iterator的子接口)

注意:
在迭代時(shí),是不可以通過集合對(duì)象的方法操作集合中的元素
因?yàn)闀?huì)發(fā)生ConcurrentModificationException異常(并發(fā)異常)
所以,在迭代器時(shí),只能用迭代器的方法造作元素
因?yàn)镮terator方法是有限的所以只能對(duì)元素進(jìn)行判斷,取出,刪除的操作
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator
該接口只能通過List集合的listIterator方法獲取

public class ListIteratorDemo {
   public static void main(String[] args) {
     ArrayList a1 = new ArrayList();
     a1.add("java01");
     a1.add("java02");
     a1.add("java03");
     a1.add("java04");
 
     System.out.println("原集合是:"+a1);
    
   /*在迭代過程中準(zhǔn)備添加或者刪除元素
   Iterator it = al.iterator();
   while (it.hasNext()){
     Object obj = it.next();
    
     if (obj.equals("java02"))
     //al.add("java008");//會(huì)出現(xiàn)并發(fā)異常,因?yàn)榈髡诓僮骷?,不能再用集合的方法操作集合?
     it.remove();//將java02的引用從集合中刪除了
     System.out.println("obj:"+obj);
    }
    */  

  //只有List的listIterator有增,刪,改,查這些功能,因?yàn)橹挥蠰ist有索引
    ListIterator li = a1.listIterator();
     while (li.hasNext()){
     if(li.next().equals("java02"))
     //li.add("java009");
     li.set("java006");
    }  
  }
}

Vector:枚舉就是Vector特有的取出方式,跟迭代器很像(其實(shí)枚舉和迭代是一樣的) 已經(jīng)被迭代器取代

 public class VectorDemo {
   public static void main(String[] args) {
     Vector v = new Vector();
     v.add("java01");
     v.add("java02");
     v.add("java03");
     v.add("java04");
 
     for(Enumeration en = v.elements();en.hasMoreElements();){
      System.out.println(en.nextElement());
    }
  }
}

LinkedList:

特有方法:  

addFirst();在頭部添加元素      addLast();在尾部添加元素

getFirst(); getLast(); 獲取元素但不刪除元素。如果集合中沒有元素,會(huì)出現(xiàn)NoSuchElementException

removeFirst();   removeLast(); 獲取元素但是刪除元素。如果集合中沒有元素,會(huì)出現(xiàn)NoSuchElementException

在JDK1.6出現(xiàn)了替代方法

offerFirst(); offerLast();

peekFirst(); peekLast(); 獲取元素,但是元素不被刪除。如果集合中沒有元素,會(huì)返回null

pollFirst(); pollLast(); 獲取元素,但是元素被刪除。如果集合中沒有元素,會(huì)返回null

 public class LinkedListDemo {
   public static void main(String[] args) {
     LinkedList link = new LinkedList();
     link.add("java01");
     link.add("java02");
     link.add("java03");
     link.add("java04");
 
     while(!link.isEmpty()){
      System.out.println((link.removeLast()));
    }
  }

}

下面是補(bǔ)充

List的用法
List包括List接口以及List接口的所有實(shí)現(xiàn)類。因?yàn)長(zhǎng)ist接口實(shí)現(xiàn)了Collection接口,所以List接口擁有Collection接口提供的所有常用方法,又因?yàn)長(zhǎng)ist是列表類型,所以List接口還提供了一些適合于自身的常用方法,如表1所示。

表1 List接口定義的常用方法及功能

從表1可以看出,List接口提供的適合于自身的常用方法均與索引有關(guān),這是因?yàn)長(zhǎng)ist集合為列表類型,以線性方式存儲(chǔ)對(duì)象,可以通過對(duì)象的索引操作對(duì)象。

List接口的常用實(shí)現(xiàn)類有ArrayList和LinkedList,在使用List集合時(shí),通常情況下聲明為L(zhǎng)ist類型,實(shí)例化時(shí)根據(jù)實(shí)際情況的需要,實(shí)例化為ArrayList或LinkedList,例如:

List<String> l = new ArrayList<String>();// 利用ArrayList類實(shí)例化List集合
List<String> l2 = new LinkedList<String>();// 利用LinkedList類實(shí)例化List集合

1.a(chǎn)dd(int index, Object obj)方法和set(int index, Object obj)方法的區(qū)別

在使用List集合時(shí)需要注意區(qū)分add(int index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置添加對(duì)象,而后者是修改指定索引位置的對(duì)象,例如執(zhí)行下面的代碼:
src/com/mwq/TestCollection.java關(guān)鍵代碼:

public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1, b);// 將索引位置為1的對(duì)象e修改為對(duì)象b
list.add(2, c);// 將對(duì)象c添加到索引位置為2的位置
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}

在控制臺(tái)將輸出如下信息:

A
B
C
D

因?yàn)長(zhǎng)ist集合可以通過索引位置訪問對(duì)象,所以還可以通過for循環(huán)遍歷List集合,例如遍歷上面代碼中的List集合的代碼如下:

src/com/mwq/TestCollection.java關(guān)鍵代碼:

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));// 利用get(int index)方法獲得指定索引位置的對(duì)象
}

src/com/mwq/TestCollection.java完整代碼如下:

package com.mwq;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1, b);// 將索引位置為1的對(duì)象e修改為對(duì)象b
list.add(2, c);// 將對(duì)象c添加到索引位置為2的位置
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
//         for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));// 利用get(int index)方法獲得指定索引位置的對(duì)象
//     }
System.out.println("結(jié)束!");
}
}

2.indexOf(Object obj)方法和lastIndexOf(Object obj)方法的區(qū)別

在使用List集合時(shí)需要注意區(qū)分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是獲得指定對(duì)象的最小的索引位置,而后者是獲得指定對(duì)象的最大的索引位置,前提條件是指定的對(duì)象在List集合中具有重復(fù)的對(duì)象,否則如果在List集合中有且僅有一個(gè)指定的對(duì)象,則通過這兩個(gè)方法獲得的索引位置是相同的,例如執(zhí)行下面的代碼:
src/com/mwq/TestCollection.java關(guān)鍵代碼:

public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";
List<String> list = new ArrayList<String>();
list.add(a);     // 索引位置為 0
list.add(repeat);   // 索引位置為 1
list.add(b);     // 索引位置為 2
list.add(repeat);   // 索引位置為 3

list.add(c);     // 索引位置為 4
list.add(repeat);   // 索引位置為 5
list.add(d);     // 索引位置為 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
}
src/com/mwq/TestCollection.java完整代碼如下:
package com.mwq;
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(repeat); // 索引位置為 1
list.add(b); // 索引位置為 2
list.add(repeat); // 索引位置為 3
list.add(c); // 索引位置為 4
list.add(repeat); // 索引位置為 5
list.add(d); // 索引位置為 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
System.out.println("結(jié)束!");
}
}

在控制臺(tái)將輸出如下信息:

1
5
2
2

3.subList(int fromIndex, int toIndex)方法

在使用subList(int fromIndex, int toIndex)方法截取現(xiàn)有List集合中的部分對(duì)象生成新的List集合時(shí),需要注意的是,新生成的集合中包含起始索引位置代表的對(duì)象,但是不包含終止索引位置代表的對(duì)象,例如執(zhí)行下面的代碼:
src/com/mwq/TestCollection.java關(guān)鍵代碼:

public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new ArrayList<String>();
list.add(a);     // 索引位置為 0
list.add(b);     // 索引位置為 1
list.add(c);     // 索引位置為 2
list.add(d);     // 索引位置為 3
list.add(e);     // 索引位置為 4
list = list.subList(1, 3);// 利用從索引位置 1 到 3 的對(duì)象重新生成一個(gè)List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
src/com/mwq/TestCollection.java完整代碼:
package com.mwq;
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(b); // 索引位置為 1
list.add(c); // 索引位置為 2
list.add(d); // 索引位置為 3
list.add(e); // 索引位置為 4
list = list.subList(1, 3);// 利用從索引位置 1 到 3 的對(duì)象重新生成一個(gè)List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("結(jié)束!");
}
}

在控制臺(tái)將輸出如下信息:

B
C

到此這篇關(guān)于java list用法示例詳解的文章就介紹到這了,更多相關(guān)java list用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java通用Mapper UUID簡(jiǎn)單示例

    Java通用Mapper UUID簡(jiǎn)單示例

    今天小編就為大家分享一篇關(guān)于Java通用Mapper UUID簡(jiǎn)單示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • windows上nacos自啟動(dòng)的三種方法小結(jié)

    windows上nacos自啟動(dòng)的三種方法小結(jié)

    本文主要給大家介紹了windows上nacos自啟動(dòng)的三種方法,借助WinSW.exe添加到服務(wù)列表,修改nacos啟動(dòng)配置以及以開機(jī)"啟動(dòng)"方式——啟動(dòng)Nacos的startup.cmd這三種方法,文中通過圖文講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • MyBatis利用MyCat實(shí)現(xiàn)多租戶的簡(jiǎn)單思路分享

    MyBatis利用MyCat實(shí)現(xiàn)多租戶的簡(jiǎn)單思路分享

    這篇文章主要給大家介紹了關(guān)于MyBatis利用MyCat實(shí)現(xiàn)多租戶的簡(jiǎn)單思路的相關(guān)資料,文中的多租戶是基于多數(shù)據(jù)庫進(jìn)行實(shí)現(xiàn)的,數(shù)據(jù)是通過不同數(shù)據(jù)庫進(jìn)行隔離,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Java中String判斷值為null或空及地址是否相等的問題

    Java中String判斷值為null或空及地址是否相等的問題

    這篇文章主要介紹了Java中String判斷值為null或空及地址是否相等的問題,文中舉了簡(jiǎn)單的例子對(duì)字符串類型的值和地址問題進(jìn)行講解,需要的朋友可以參考下
    2016-01-01
  • Java String 拼接字符串原理詳解

    Java String 拼接字符串原理詳解

    在本篇文章里小編給大家分享的是關(guān)于Java String 拼接字符串原理詳解的相關(guān)資源內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2020-02-02
  • java去除數(shù)組重復(fù)元素的四種方法

    java去除數(shù)組重復(fù)元素的四種方法

    本文給大家分享四種java去除數(shù)組重復(fù)元素的方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • java 對(duì)象的序列化和反序列化詳細(xì)介紹

    java 對(duì)象的序列化和反序列化詳細(xì)介紹

    這篇文章主要介紹了java 對(duì)象的序列化和反序列化的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • JavaEE中關(guān)于ServletConfig的小結(jié)

    JavaEE中關(guān)于ServletConfig的小結(jié)

    ServletConfig是針對(duì)特定的Servlet的參數(shù)或?qū)傩?。ServletConfig是表示單獨(dú)的Servlet的配置和參數(shù),只是適用于特定的Servlet。從一個(gè)servlet被實(shí)例化后,對(duì)任何客戶端在任何時(shí)候訪問有效,但僅對(duì)本servlet有效,一個(gè)servlet的ServletConfig對(duì)象不能被另一個(gè)servlet訪問
    2014-10-10
  • Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn)

    Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn)

    這篇文章主要介紹了Spring boot集成Go-FastDFS實(shí)現(xiàn)圖片上傳刪除等功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題)

    Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題)

    這篇文章主要介紹了Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評(píng)論