最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java list用法示例詳解

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

|--List:元素是有序的(怎么存的就怎么取出來,順序不會亂),元素可以重復(fù)(角標1上有個3,角標2上也可以有個3)因為該集合體系有索引,
  |-- ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)(數(shù)組長度是可變的百分之五十延長)(特點是查詢很快,但增刪較慢)線程不同步
  |-- LinkedList:底層的數(shù)據(jù)結(jié)構(gòu)是鏈表結(jié)構(gòu)(特點是查詢較慢,增刪較快)
  |-- Vector:底層是數(shù)組數(shù)據(jù)結(jié)構(gòu) 線程同步(數(shù)組長度是可變的百分之百延長)(無論查詢還是增刪都很慢,被ArrayList替代了)

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

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);
}

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

 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));//獲取指定角標的元素,有了該方法就可以遍歷該集合中的所有元素
     
   System.out.println(a1.subList(1, 3));//獲取集合中某一部分的元素,包含頭不包含尾
}

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

注意:
在迭代時,是不可以通過集合對象的方法操作集合中的元素
因為會發(fā)生ConcurrentModificationException異常(并發(fā)異常)
所以,在迭代器時,只能用迭代器的方法造作元素
因為Iterator方法是有限的所以只能對元素進行判斷,取出,刪除的操作
如果想要其他的操作如添加,修改等,就需要使用其子接口,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);
    
   /*在迭代過程中準備添加或者刪除元素
   Iterator it = al.iterator();
   while (it.hasNext()){
     Object obj = it.next();
    
     if (obj.equals("java02"))
     //al.add("java008");//會出現(xiàn)并發(fā)異常,因為迭代器正在操作集合,不能再用集合的方法操作集合了
     it.remove();//將java02的引用從集合中刪除了
     System.out.println("obj:"+obj);
    }
    */  

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

Vector:枚舉就是Vector特有的取出方式,跟迭代器很像(其實枚舉和迭代是一樣的) 已經(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(); 獲取元素但不刪除元素。如果集合中沒有元素,會出現(xiàn)NoSuchElementException

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

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

offerFirst(); offerLast();

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

pollFirst(); pollLast(); 獲取元素,但是元素被刪除。如果集合中沒有元素,會返回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()));
    }
  }

}

下面是補充

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

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

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

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

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

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

在使用List集合時需要注意區(qū)分add(int index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置添加對象,而后者是修改指定索引位置的對象,例如執(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的對象e修改為對象b
list.add(2, c);// 將對象c添加到索引位置為2的位置
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}

在控制臺將輸出如下信息:

A
B
C
D

因為List集合可以通過索引位置訪問對象,所以還可以通過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)方法獲得指定索引位置的對象
}

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的對象e修改為對象b
list.add(2, c);// 將對象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)方法獲得指定索引位置的對象
//     }
System.out.println("結(jié)束!");
}
}

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

在使用List集合時需要注意區(qū)分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是獲得指定對象的最小的索引位置,而后者是獲得指定對象的最大的索引位置,前提條件是指定的對象在List集合中具有重復(fù)的對象,否則如果在List集合中有且僅有一個指定的對象,則通過這兩個方法獲得的索引位置是相同的,例如執(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é)束!");
}
}

在控制臺將輸出如下信息:

1
5
2
2

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

在使用subList(int fromIndex, int toIndex)方法截取現(xiàn)有List集合中的部分對象生成新的List集合時,需要注意的是,新生成的集合中包含起始索引位置代表的對象,但是不包含終止索引位置代表的對象,例如執(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 的對象重新生成一個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 的對象重新生成一個List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("結(jié)束!");
}
}

在控制臺將輸出如下信息:

B
C

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

相關(guān)文章

  • Spring Cloud之配置中心的搭建

    Spring Cloud之配置中心的搭建

    這篇文章主要介紹了Spring Cloud之配置中心的搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • SpringMVC的REST風(fēng)格的四種請求方式總結(jié)

    SpringMVC的REST風(fēng)格的四種請求方式總結(jié)

    下面小編就為大家?guī)硪黄猄pringMVC的REST風(fēng)格的四種請求方式總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)之對象比較詳解

    Java數(shù)據(jù)結(jié)構(gòu)之對象比較詳解

    這篇文章主要為大家詳細介紹了Java中對象的比較、集合框架中PriorityQueue的比較方式以及PriorityQueue的模擬實現(xiàn),感興趣的可以了解一下
    2022-07-07
  • Java中關(guān)于ThreadLocal的隱式引用詳解

    Java中關(guān)于ThreadLocal的隱式引用詳解

    這篇文章主要介紹了Java中關(guān)于ThreadLocal的隱式引用,從線程的角度看,每個線程都保持一個對其線程局部變量副本的隱式引用,只要線程是活動的,ThreadLocal實例就是可訪問的,下面我們來具體看看
    2024-03-03
  • 解決Idea查看源代碼警告Library source does not match the bytecode for class XXX問題

    解決Idea查看源代碼警告Library source does not mat

    在使用IDEA開發(fā)時,遇到第三方j(luò)ar包中的源代碼和字節(jié)碼不一致的問題,會導(dǎo)致無法正確打斷點進行調(diào)試,這通常是因為jar包更新后源代碼沒有同步更新造成的,解決方法是刪除舊的jar包,通過Maven重新下載或手動下載最新的源代碼包,確保IDE中的源碼與字節(jié)碼版本一致
    2024-10-10
  • Java?Agent?(代理)探針技術(shù)詳情

    Java?Agent?(代理)探針技術(shù)詳情

    這篇文章主要介紹了Java?Agent?探針技術(shù)詳情,Java?中的?Agent?技術(shù)可以讓我們無侵入性的去進行代理,最常用于程序調(diào)試、熱部署、性能診斷分析等場景,下文更多相關(guān)資料,感興趣的小伙伴可以參考一下
    2022-04-04
  • 解決MyBatis中為類配置別名,列名與屬性名不對應(yīng)的問題

    解決MyBatis中為類配置別名,列名與屬性名不對應(yīng)的問題

    這篇文章主要介紹了解決MyBatis中為類配置別名,列名與屬性名不對應(yīng)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • FastJSON的0day漏洞的解決

    FastJSON的0day漏洞的解決

    本文主要介紹了FastJSON的0day漏洞的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Mybatis中${param}與#{param}的區(qū)別說明

    Mybatis中${param}與#{param}的區(qū)別說明

    這篇文章主要介紹了Mybatis中${param}與#{param}的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 如何將Object類轉(zhuǎn)換為實體類

    如何將Object類轉(zhuǎn)換為實體類

    這篇文章主要介紹了如何將Object類轉(zhuǎn)換為實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

曲阜市| 奎屯市| 长宁区| 沁水县| 惠东县| 富川| 福鼎市| 酉阳| 岢岚县| 上虞市| 柯坪县| 读书| 望奎县| 南安市| 东乡县| 新密市| 琼海市| 临泽县| 甘孜| 中西区| 杨浦区| 泽普县| 惠来县| 忻城县| 新宁县| 崇仁县| 固原市| 四川省| 柳江县| 昌邑市| 浙江省| 柳林县| 黔南| 郯城县| 兰溪市| 乡城县| 临清市| 牟定县| 郑州市| 日喀则市| 普定县|