【JAVA集合】List集合
1.List接口介紹
java.util.List接口繼承自Collection接口,是單列集合的一個重要分支,習慣性地會將實現了List接口的對象稱為List集合。在List集合中允許出現重復的元素,所有的元素是以一種線性方式進行存儲的,在程序中可以通過索引來訪問集合中的指定元素。另外,List集合還有一個特點就是元素有序,即元素的存入順序和取出順序一致。
看完API,我們總結一下:
List接口特點:
tips:已經學習過List接口的子類java.util.ArrayList類,該類中的方法都是來自List中定義。
2.List接口中常用方法
List作為Collection集合的子接口,不但繼承了Collection接口中的全部方法,而且還增加了一些根據元素索引來操作集合的特有方法,如下:
- public void add(int index, E element): 將指定的元素,添加到該集合中的指定位置上。
- public E get(int index):返回集合中指定位置的元素。
- public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
- public E set(int index, E element):用指定元素替換集合中指定位置的元素,返回值的更新前的元素。
List集合特有的方法都是跟索引相關:
public class ListDemo {public static void main(String[] args) {// 創建List集合對象List<String> list = new ArrayList<String>();// 往 尾部添加 指定元素list.add("圖圖");list.add("小美");list.add("不高興");System.out.println(list);// add(int index,String s) 往指定位置添加list.add(1,"沒頭腦");System.out.println(list);// String remove(int index) 刪除指定位置元素 返回被刪除元素// 刪除索引位置為2的元素 System.out.println("刪除索引位置為2的元素");System.out.println(list.remove(2));System.out.println(list);// String set(int index,String s)// 在指定位置 進行 元素替代(改) // 修改指定位置元素list.set(0, "三毛");System.out.println(list);// String get(int index) 獲取指定位置元素// 跟size() 方法一起用來遍歷的 for(int i = 0;i<list.size();i++){System.out.println(list.get(i));}//還可以使用增強forfor (String string : list) {System.out.println(string);} } }3.ArrayList集合
java.util.ArrayList集合數據存儲的結構是數組結構。元素增刪慢,查找快,由于日常開發中使用最多的功能為查詢數據、遍歷數據,所以ArrayList是最常用的集合。
許多程序員開發時非常隨意地使用ArrayList完成任何需求,并不嚴謹,這種用法是不提倡的。
4.LinkedList集合
java.util.LinkedList集合數據存儲的結構是鏈表結構。方便元素添加、刪除的集合。
LinkedList是一個雙向鏈表,那么雙向鏈表是什么樣子的呢,我們用個圖了解下
實際開發中對一個集合元素的添加與刪除經常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。這些方法我們作為了解即可:
- public void addFirst(E e):將指定元素插入此列表的開頭。
- public void addLast(E e):將指定元素添加到此列表的結尾。
- public E getFirst():返回此列表的第一個元素。
- public E getLast():返回此列表的最后一個元素。
- public E removeFirst():移除并返回此列表的第一個元素。
- public E removeLast():移除并返回此列表的最后一個元素。
- public E pop():從此列表所表示的堆棧處彈出一個元素。
- public void push(E e):將元素推入此列表所表示的堆棧。
- public boolean isEmpty():如果列表不包含元素,則返回true。
LinkedList是List的子類,List中的方法LinkedList都是可以使用,這里就不做詳細介紹,我們只需要了解LinkedList的特有方法即可。在開發時,LinkedList集合也可以作為堆棧,隊列的結構使用。
public class Demo04LinkedList {public static void main(String[] args) {method4();}/** void push(E e): 壓入。把元素添加到集合的第一個位置。* E pop(): 彈出。把第一個元素刪除,然后返回這個元素。*/public static void method4() {//創建LinkedList對象LinkedList<String> list = new LinkedList<>();//添加元素list.add("達爾文");list.add("達芬奇");list.add("達爾優");System.out.println("list:" + list);//調用push在集合的第一個位置添加元素//list.push("愛迪生");//System.out.println("list:" + list);//[愛迪生, 達爾文, 達芬奇, 達爾優]//E pop(): 彈出。把第一個元素刪除,然后返回這個元素。String value = list.pop();System.out.println("value:" + value);//達爾文System.out.println("list:" + list);//[達芬奇,達爾優]}/** E removeFirst():刪除第一個元素* E removeLast():刪除最后一個元素。*/public static void method3() {//創建LinkedList對象LinkedList<String> list = new LinkedList<>();//添加元素list.add("達爾文");list.add("達芬奇");list.add("達爾優");//刪除集合的第一個元素 // String value = list.removeFirst(); // System.out.println("value:" + value);//達爾文 // System.out.println("list:" + list);//[達芬奇,達爾優]//刪除最后一個元素String value = list.removeLast();System.out.println("value:" + value);//達爾優System.out.println("list:" + list);//[達爾文, 達芬奇]}/** E getFirst(): 獲取集合中的第一個元素* E getLast(): 獲取集合中的最后一個元素*/public static void method2() {//創建LinkedList對象LinkedList<String> list = new LinkedList<>();//添加元素list.add("達爾文");list.add("達芬奇");list.add("達爾優");System.out.println("list:" + list);//獲取集合中的第一個元素System.out.println("第一個元素是:" + list.getFirst());//獲取集合中的最后一個元素怒System.out.println("最后一個元素是:" + list.getLast());} /** void addFirst(E e): 在集合的開頭位置添加元素。* void addLast(E e): 在集合的尾部添加元素。*/public static void method1() {//創建LinkedList對象LinkedList<String> list = new LinkedList<>();//添加元素list.add("達爾文");list.add("達芬奇");list.add("達爾優");//打印這個集合System.out.println("list:" + list);//[達爾文, 達芬奇, 達爾優]//調用addFirst添加元素list.addFirst("曹操");System.out.println("list:" + list);//[曹操, 達爾文, 達芬奇, 達爾優]//調用addLast方法添加元素list.addLast("大喬");System.out.println("list:" + list);//[曹操, 達爾文, 達芬奇, 達爾優, 大喬]} }總結
以上是生活随笔為你收集整理的【JAVA集合】List集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chapter6 胞内信号网络
- 下一篇: 银行数据标准管理