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));
			}
		}
		
	}
发布了30 篇原创文章 · 获赞 0 · 访问量 1954

猜你喜欢

转载自blog.csdn.net/qq_38499019/article/details/104398998