List常見方法用法總結
阿新 • • 發佈:2018-12-18
Collection 介面雖然是集合中最大的介面,但是如果直接使用Collection進行操作,表意並不明確,因此現在Collection介面現在已經不提倡使用,在這總結一下List子介面下的ArrayList類常見用法。
先在此羅列一些List介面中常見常用的方法:
在這些方法中get()方法是Collection介面中沒有出現的方法,因此使用get()方法可以很方便的遍歷List集合中的每一個元素,這是Collection介面不具備的,遍歷Collection集合中的元素則需要使用迭代器。
方法如何簡單使用,觀察例子:
package com.qty6.demo;
import java. util.ArrayList;
import java.util.List;
/*
1. @author F3ver1
2. @date 2018/10/30 9:20
*/
public class Demo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("紅顏彈指老");
list.add("剎那芳華");
list.add("與其天涯思苦");
list. add("戀戀不捨");
list.add("莫若相忘於江湖");
list.add("莫若相忘於江湖");
//列印該集合
System.out.println(list);
System.out.println("-------------------");
//判斷長度和是否為空
System.out.println("list集合長度:"+list.size()+",list集合是否為空:"+list.isEmpty());
System.out.println("-------------------" );
//查詢指定元素的索引
System.out.println(list.indexOf("紅顏彈指老"));
System.out.println(list.indexOf("剎那芳華"));
System.out.println(list.lastIndexOf("紅顏彈指老"));
System.out.println("-------------------");
//刪除指定索引的元素
list.remove(0);
System.out.println(list);
System.out.println("-------------------");
//改變指定索引的元素
list.set(2,"戀戀難忘");
System.out.println(list);
}
}
結果列印: [紅顏彈指老, 剎那芳華, 與其天涯思苦, 戀戀不捨, 莫若相忘於江湖, 莫若相忘於江湖] ———————————————————— list集合長度:6,list集合是否為空:false ———————————————————— 0 1 0 ———————————————————— [剎那芳華, 與其天涯思苦, 戀戀不捨, 莫若相忘於江湖, 莫若相忘於江湖] ———————————————————— [剎那芳華, 與其天涯思苦, 戀戀難忘, 莫若相忘於江湖, 莫若相忘於江湖]
List是個介面,無法直接為其例項化,選擇使用子類ArrayList為其例項化,可以通過以上的例子看出
- List集合可以儲存重複的元素
- 元素是有序的,這裡的順序就是按照為集合新增元素時的順序
- 是可以儲存不同資料型別的元素的,由於我規定了String,就只存了String
- 相較於陣列,長度是可以變化的
- 只能儲存引用資料型別
在這裡解釋一下第五條
public class Demo6 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(100);//Integer i = 100; Integer i = Integer.valueOf(100);
list.add(200);
System.out.println(list);
}
}
這裡100並不是基本資料型別,因為List只能儲存引用資料型別,因此是包裝類Integer自動裝箱,以下語法自然是會報錯的
Integer<int> list = new ArrayList<>();
再總結一下List集合儲存物件並遍歷元素:
package com.qty6.demo;
import java.util.*;
/*
* @author F3ver1
* @date 2018/10/29 17:09
*/
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class Test{
public static void main(String[] args) {
List<Student> List = new ArrayList<>();
List.add(new Student("qty",20));
List.add(new Student("qqq",21));
List.add(new Student("aaa",22));
Iterator<Student> iterator = List.iterator();
//使用Collection介面中的迭代器遍歷
while (iterator.hasNext()){
Student student = iterator.next();
System.out.println("姓名:"+student.getName()+",年齡:"+student.getAge());
}
System.out.println("-----------------------");
//使用for迴圈,size()方法與get()方法結合遍歷
for (int i = 0;i<List.size();i++){
Student student = List.get(i);
System.out.println("姓名:"+student.getName()+",年齡:"+student.getAge());
}
System.out.println("-----------------------");
//使用List特有迭代器遍歷
ListIterator<Student> listIterator = List.listIterator();
while (listIterator.hasNext()){
Student student = listIterator.next();
System.out.println("姓名:"+student.getName()+",年齡:"+student.getAge());
}
}
}
結果列印: 姓名:qty,年齡:20 姓名:qqq,年齡:21 姓名:aaa,年齡:22 ———————————————— 姓名:qty,年齡:20 姓名:qqq,年齡:21 姓名:aaa,年齡:22 ———————————————— 姓名:qty,年齡:20 姓名:qqq,年齡:21 姓名:aaa,年齡:22