亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java list用法示例詳解

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

|--List:元素是有序的(怎么存的就怎么取出來,順序不會亂),元素可以重復(角標1上有個3,角標2上也可以有個3)因為該集合體系有索引,
  |-- ArrayList:底層的數(shù)據(jù)結構使用的是數(shù)組結構(數(shù)組長度是可變的百分之五十延長)(特點是查詢很快,但增刪較慢)線程不同步
  |-- LinkedList:底層的數(shù)據(jù)結構是鏈表結構(特點是查詢較慢,增刪較快)
  |-- Vector:底層是數(shù)組數(shù)據(jù)結構 線程同步(數(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集合中的元素可以重復
  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接口提供的適合于自身的常用方法均與索引有關,這是因為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關鍵代碼:

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關鍵代碼:

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("結束!");
}
}

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

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

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("結束!");
}
}

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

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關鍵代碼:

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("結束!");
}
}

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

B
C

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

相關文章

  • Java通用Mapper UUID簡單示例

    Java通用Mapper UUID簡單示例

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

    windows上nacos自啟動的三種方法小結

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

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

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

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

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

    Java String 拼接字符串原理詳解

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

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

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

    java 對象的序列化和反序列化詳細介紹

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

    JavaEE中關于ServletConfig的小結

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

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

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

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

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

最新評論