List接口及其实现类ArrayList、LinkedList、Vector

List接口:

java中数组用来存储数据的局限性

List集合中元素有序、可重复,集合中的每个元素都有其对应的顺序索引。

list容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

JDK API中list接口的实现类常用的有:arraylist、linkedlist和Vector。

List集合里添加了一些根据索引来操作集合元素的方法

ArrayList:

ArrayList是List接口的典型实现类

本质上,ArrayList是对象引用的一个变长数组

ArrayList是线程不安全的,而Vector是线程安全的,即使为保证List集合线程安全,也不推荐使用Vector

Arrays.asList()方法返回的List集合既不是ArrayList实例,也不是vector实例,而是一个固定长度的List集合

package com.xatu.集合;


import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
class Student{
	String name;
	int age;
}
public class LIstTest {
		@Test
		public void testArrayList() {
		List	l = new ArrayList<>();
		l.add(new Integer(100));
		System.out.println("添加200结果1"+l.add(200));
		System.out.println("添加200结果2"+l.add(200));
		System.out.println("添加一个对象"+l.add(new Student()));
		l.add("aaa");
		l.add("aaa");
		l.add(0,new Student());
		l.set(1, 2000);//替换
		System.out.println("大小"+l.size());
		System.out.println(l.indexOf("aaa"));//5
		System.out.println(l.indexOf("aaa"));//5
		    List sl = l.subList(3, 6);
		    System.out.println("sl"+sl);//
		    
		    for (Object object : l) {
				System.out.println(object);
			}
		    System.out.println("-------------");
		    //正常循环打印
		    for (int i = 0; i < l.size(); i++) {
				System.out.println(l.get(i));
			}
		
		}
}

LinkedList:

对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高

Vector:

大多作用与ArrayList相同,区别Vector线程安全。

在各种list中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList,vector总是比ArrayList慢所以尽量避免使用

猜你喜欢

转载自blog.csdn.net/dagedeshu/article/details/86603926