List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
说明:
-
由于Java中数组用来存储数据的局限性,通常使用List替代数组
-
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据 序号存取容器中的元素。
-
JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
List接口方法:
-
void add(int index, Object ele):在index位置插入ele元素
-
boolean addAll(int index, Collection eles):从index位置开始将eles中 的所有元素添加进来
-
Object get(int index):获取指定index位置的元素
-
int indexOf(Object obj):返回obj在集合中首次出现的位置
-
int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
-
Object remove(int index):移除指定index位置的元素,并返回此元素
-
Object set(int index, Object ele):设置指定index位置的元素为ele
-
List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex 位置的子集合
使用示例:
public class ListTest {
@Test
public void test2() {
ArrayList list = new ArrayList();
list.add(123);
list.add(456);
list.add("aa");
list.add(new Person("Tom", 12));
list.add(456);
//int indexOf(Object obj):返回obj在集合中首次出现的位置
int index = list.indexOf(456);
System.out.println(index);
//int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
System.out.println(list.lastIndexOf(456));
//Object remove(int index):移除指定index位置的元素,并返回此元素
Object obj = list.remove(0);
System.out.println(obj);
System.out.println(list);
//Object set(int index, Object ele):设置指定index位置的元素为ele
list.set(1,"cc");
System.out.println(list);
//List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex
List subList = list.subList(2, 4);
System.out.println(subList);
}
@Test
public void test1() {
ArrayList list = new ArrayList();
list.add(123);
list.add(456);
list.add("aa");
list.add(new Person("Tom", 12));
list.add(456);
System.out.println(list);
//void add(int index, Object ele):在index位置插入ele元素
list.add(1, "BB");
System.out.println(list);
//boolean addAll(int index, Collection eles):从index位置开始将eles中
// * 的所有元素添加进来
List list1 = Arrays.asList(1, 2, 3);
list.addAll(list1);
System.out.println(list.size());
//Object get(int index):获取指定index位置的元素
System.out.println(list.get(0));
}
}
List实现类之一:ArrayLsit
ArrayList 是 List 接口的典型实现类、主要实现类;本质上,ArrayList是对象引用的一个”变长”数组
使用示例:
@Test
public void test2() {
ArrayList list = new ArrayList();
list.add(123);
list.add(456);
list.add("aa");
list.add(new Person("Tom", 12));
list.add(456);
//int indexOf(Object obj):返回obj在集合中首次出现的位置
int index = list.indexOf(456);
System.out.println(index);
//int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
System.out.println(list.lastIndexOf(456));
//Object remove(int index):移除指定index位置的元素,并返回此元素
Object obj = list.remove(0);
System.out.println(obj);
System.out.println(list);
//Object set(int index, Object ele):设置指定index位置的元素为ele
list.set(1,"cc");
System.out.println(list);
//List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex
List subList = list.subList(2, 4);
System.out.println(subList);
}
List实现类之二:LinkedList
LinkedList:双向链表,内部没有声明数组,而是定义了Node类型的first和last, 用于记录首末元素。同时,定义内部类Node,作为LinkedList中保存数据的基 本结构。
对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高
新增方法:
-
void addFirst(Object obj)
-
void addLast(Object obj)
-
Object getFirst()
-
Object getLast()
-
Object removeFirst()
-
Object removeLast()
List实现类之三:Vector
Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList 相同,区别之处在于Vector是线程安全的
新增方法:
-
void addElement(Object obj)
-
void insertElementAt(Object obj,int index)
-
void setElementAt(Object obj,int index)
-
void removeElement(Object obj)
-
void removeAllElements()