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));
}
}
}