hpe實訓課(List列表內容相關)

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);
		// indexof:獲取第一次出現的索引位置
		int index = list.indexOf(119);
		System.out.println(index);
		// lastindexof 獲取最後一次出現的索引位置
		int lastIndex = list.lastIndexOf(119);
		System.out.println(lastIndex);
		
		// addAll() 在指定的位置添加一個集合
		list.addAll(0, Arrays.asList(new String[] {"張三","李四","王五"}));
		System.out.println(list);
	}
	
	
}

遍歷List的四種方法:

@Test
	public void testList2() {
		// 遍歷List集合
		List list = new ArrayList();
		list.add("張三");
		list.add("李四");
		list.add("王五");
		list.add("趙六");
		list.add(123);
		// 1.使用迭代器
		Iterator iterator = list.iterator();
		// 判斷有沒有下一個元素
		while (iterator.hasNext()) {
			// 取出元素
			Object object = iterator.next();
			System.out.println(object);
		}
		
		System.out.println("-----------------------------");
		// 2.使用增強for循環
		for (Object object : list) {
			System.out.println(object);
			
		}
		
		System.out.println("-----------------------------");
		
		// 3.使用for循環
		for (int i = 0; i < list.size(); i++) {
			Object obj = list.get(i);
			System.out.println(obj);
		}
		
		System.out.println("-----------------------------");
		
		// 4.使用List集合中的toArray()方法
		System.err.println(list.toArray());
		
		// 5.List集合注意事項
		// 沒有分配具體實例
		List list1 = null;
		// 分配了具體實例,但是集合中沒有任何元素
		List list2 = new ArrayList();
		// 由於沒有分配具體實例,list1引用找不到對象的實例,會報一個NullPointerException(空指針異常)
		// System.out.println(list1.size());
		System.out.println(list2.size());
		
		// 在遍歷集合之前,通常要判斷該集合是否爲null且集合中是否有元素
		if (list2!=null && list2.size()!=0) {
			for (int i = 0; i < list2.size(); i++) {
				System.out.println(list2.get(i));
			}
		}
		
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章