List
1.List接口是Collection接口的子接口
2.List它是有序的集合,存儲元素和取出元素順序是一致的(存abc 取abc)
3.有索引,包含了一些帶索引的方法(底層實現是使用數組,它是一個可變數組)
4.允許存儲重複的元素
5.List接口的主要實現類:ArrayList
6.常用方法
void add(int index, Object ele):在指定索引位置添加元素
boolean addAll(int index, Collection eles):在指定的索引位置添加一個集合
Object get(int index):獲取指定索引位置的元素
int indexOf(Object obj):返回obj在集合中首次出現的索引位置,如果沒有找到索引,則返回-1
int lastIndexOf(Object obj):返回obj在集合中最後一次出現的索引位置,如果沒有找到索引,則返回-1
Object remove(int index):刪除指定索引位置的元素
Object set(int index, Object ele):設置指定索引位置的元素(updata)
List集合中常用的實現類
1.ArrayList
①.底層實現是使用數組的方式來實現(動態數組),允許包含所有元素類型(null)
②.可以根據索引位置對集合進行快速的隨機訪問
③.向指定索引的位置插入元素或者刪除元素速度比較慢
2.LinkedList
①.LinkedList是採用雙向鏈表的方式來操作數據
②.便於向集合中插入和刪除元素,這種效率比較高
③.使用鏈表的形式操作數組,訪問數據的速度是比較慢
3.Vector
①.底層實現也是使用數組的方式
②.是線程安全的,效率比較低
4.ArrayList和LinkedList區別
①.ArrayList是基於數組的實現方式,LinkedList使用雙向鏈表的數據結構,這是兩種技術,決定了不同的應用場景
②.對於隨機訪問get和set,ArrayList優於LinkedList,因爲LinkedList要移動指針
③.對於頻繁的新增和刪除操作(Add和Remove),LinkedList優於ArrayList,因爲ArrayList要移動數據
package com.hpe.list;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
public class TestList {
@Test
public void testList1() {
List list = new ArrayList();
list.add(123);
list.add("zhangsan");
list.add(new String("eric"));
System.out.println(list);
list.add(0, 110);
System.out.println(list);
Object obj = list.get(1);
System.out.println(obj);
list.remove(0);
System.out.println(list.get(0));
list.set(0, 119);
System.out.println(list);
list.add(119);
int index = list.indexOf(119);
System.out.println(index);
int lastIndex = list.lastIndexOf(119);
System.out.println(lastIndex);
list.addAll(0, Arrays.asList(new String[] {"張三","李四","王五"}));
System.out.println(list);
}
}
遍歷List的四種方法:
@Test
public void testList2() {
List list = new ArrayList();
list.add("張三");
list.add("李四");
list.add("王五");
list.add("趙六");
list.add(123);
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
System.out.println(object);
}
System.out.println("-----------------------------");
for (Object object : list) {
System.out.println(object);
}
System.out.println("-----------------------------");
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
System.out.println(obj);
}
System.out.println("-----------------------------");
System.err.println(list.toArray());
List list1 = null;
List list2 = new ArrayList();
System.out.println(list2.size());
if (list2!=null && list2.size()!=0) {
for (int i = 0; i < list2.size(); i++) {
System.out.println(list2.get(i));
}
}
}