目錄
List介面
List介面概述
List介面成員方法
1.添加方法
2.洗掉功能
3.獲取功能
4.修改功能
List集合特有的迭代器
ListIterator介面的成員方法
List集合特有遍歷方式
List介面

List介面概述
有序的 collection(也稱為序列),此介面的用戶可以對串列中每個元素的插入位置進行精確地控制,用戶可以根據元素的整數索引(在串列中的位置)訪問元素,并搜索串列中的元素, 與 set 不同,串列通常允許重復的元素,
List介面成員方法
1.添加方法
void add(int index,E element) 將指定的元素插入此串列中的指定位置(可選操作)
import java.util.ArrayList;
import java.util.List;
public class CollectionTest6 {
public static void main(String[] args) {
//創建List集合物件
List list =new ArrayList();
//向集合添加元素
list.add("java");
list.add("hadoop");
list.add("bigdata");
System.out.println(list);
//void add(int index,E element) 將指定的元素插入此串列中的指定位置(可選操作)
list.add(1,"hive"); //在索引為1的位置上(hadoop)插入hive
System.out.println(list);
}
}

插入元素索引超過集合長度會報錯(范圍:index>=0&&index <=list.size() )
2.洗掉功能
E remove(int index) 洗掉該串列中指定位置的元素 (可選操作)
System.out.println(list); //原集合
//E remove(int index) 洗掉該串列中指定位置的元素 (可選操作)
System.out.println(list.remove(3)); //洗掉索引為3的元素,有回傳值,可輸出,回傳被洗掉的元素
System.out.println(list);

3.獲取功能
E get(int index) 回傳此串列中指定位置的元素
System.out.println(list);//原集合
//E get(int index) 回傳此串列中指定位置的元素
System.out.println(list.get(2)); //回傳索引為2的元素,原集合不變
System.out.println(list);

4.修改功能
E set(int index,E element) 用指定的元素(可選操作)替換此串列中指定位置的元素
System.out.println(list);//原集合
//E set(int index,E element) 用指定的元素(可選操作)替換此串列中指定位置的元素
Object o = list.set(1, "hello");
System.out.println(o); //回傳的是被替換的那個元素
System.out.println(list);

List集合特有的迭代器
ListIterator listIterator() 回傳串列中的串列迭代器(按適當的順序)
ListIterator繼承Iterator介面,所以內部有hasNext()和next()方法 【Collection,Iterator介面 】
例:用List特有迭代器遍歷字串
public class ListTest1 {
public static void main(String[] args) {
//創建List集合物件
List list =new ArrayList();
//向集合添加元素
list.add("java");
list.add("hive");
list.add("bigdata");
list.add("hadoop");
list.add("python");
//獲取迭代器物件 ListIterator listIterator() 回傳串列中的串列迭代器(按適當的順序)
ListIterator listIterator = list.listIterator();
//遍歷
while(listIterator.hasNext()){
//向下轉型,獲取元素的方法(元素的長度)
String s =(String) listIterator.next();
System.out.println(s+" 長度:"+s.length());
}
}
}

ListIterator介面的成員方法
E previous() 回傳串列中的上一個元素,并向后移動游標位置,可以反復呼叫此方法以向后遍歷串列,或者與呼叫next()進行混合來回,(若最先使用會報錯,因為前面無元素)
boolean hasPrevious() 遍歷反向串列,串列迭代器有多個元素 回傳true,否則false (與hasnext()相對)
例:修改List迭代器反向遍歷
while(listIterator.hasNext()){
//向下轉型,獲取元素的方法(元素的長度)
String s =(String) listIterator.next();
System.out.println(s+" 長度:"+s.length());
}
System.out.println("=======分界線==========");
while(listIterator.hasPrevious()){
String s= (String) listIterator.previous();
System.out.println(s+" 長度:"+s.length());
}

所以要想用此方法反著遍歷需先正著遍歷,將指標移動到末尾,
List集合特有遍歷方式
因為List集合中有 E get(int index) 的獲取方法,所以我們可以利用size()和get()方法結合來遍歷,
例:List集合特有遍歷方式
import java.util.ArrayList;
import java.util.List;
public class ListTest2 {
public static void main(String[] args) {
//創建List集合物件
List list=new ArrayList ();
//添加元素
list.add("java");
list.add("sad23");
list.add("wre32323");
list.add("rr333");
//利用size()和get()方法遍歷
for (int i=0;i<list.size();i++){
//獲取list集合中每一個元素
Object o = list.get(i);
//向下轉型,獲取元素的方法(字串的長度)
String s=(String) o;
System.out.println(s+" 長度"+s.length());
}
}
}

案例:存在一個集合,其中存放String型別資料,如果該集合元素里有“hive”,添加一個“true”,
方法一:迭代器遍歷
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListTest3 {
public static void main(String[] args) {
//創建List集合物件
List list = new ArrayList ();
//添加元素
list.add("wa2323");
list.add("ds3434");
list.add("hive");
list.add("g444");
list.add("sd3s3");
//方法a:用list特有迭代器ListIterator遍歷
//獲取迭代器物件
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
Object next = listIterator.next();
//向下轉型獲取元素
String s=(String) next;
//判斷是否有“hive”
if("hive".equals(s)){
listIterator.add("true"); //如果有,此時指標正好指向hive,所以將會在hive后添加true
}
}
System.out.println(list);

方法二:List集合特有方法遍歷
//方法b:利用List集合特有的遍歷方式(size()和get()方法結合)
for (int i=0;i<list.size();i++){
Object o = list.get(i);
//向下轉型
String s=(String) o;
if ("hive".equals(s)){
list.add("true"); //這里沒有用到迭代器,無指標,所以將會在集合末尾添加true
}
System.out.println(s+" 長度:"+s.length());
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423881.html
標籤:其他
下一篇:DNS的各種記錄型別的應用決議
