List 代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引
List 允许使用重复元素,可以通过索引来访问指定位置的集合元素。
List 默认按元素的添加顺序设置元素的索引。
List实现类之一:ArrayList
ArrayList 是 List 接口的典型实现类 本质上,ArrayList是对象引用的一个变长数组
List实现类之一:LinkedList
LinkedList类采用链表存储方式。插入、删除元素时效率比较高,如下图
使用情况:
ArrayList:遍历元素和随机访问元素的效率比较高
插入、删除等操作频繁时性能低下
LinkedList:插入、删除元素效率高
查找效率低下
常用方法:
public class TestList {
@Test
public void testList1() {
//List常用法方法:add(Object obj) remove(int index)
// set(int indext,Object obj)
// add(int index,Object obj)
List list = new ArrayList();
list.add(123);
list.add(456);
list.add(new String("eric"));
list.add(new String("tina"));
System.out.println(list);
//在指定索引位置添加元素;
list.add(0, 111);
System.out.println(list);
Object obj = list.get(0);
System.out.println(obj);
//删除指定索引的元素
list.remove(0);
System.out.println(list.get(0));
//设置指定元素
list.set(0, 119);
System.out.println(list.get(0));
}
@Test
public void testList2() {
List list = new ArrayList();
list.add(123);
list.add(456);
list.add(new String("eric"));
list.add(new String("tina"));
list.add(123);
//返回元素在集合中首次出现的位置,如果没有则返回-1
System.out.println(list.indexOf(123));
System.out.println(list.lastIndexOf(123));
//判断集合中没有重复
System.out.println(list.indexOf(456)==list.lastIndexOf(456));
}
}
ArrayList遍历
public class TestList {
@Test
public void testList3() {
List list = new ArrayList();
list.add(123);
list.add(456);
list.add(new String("eric"));
list.add(new String("tina"));
//1.迭代器
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("=========");
//for循环
for(Iterator i=list.iterator();i.hasNext();) {
System.out.println(i.next());
}
System.out.println("==========");
//增强for循环
for (Object obj : list) {
System.out.println(obj);
}
System.out.println("=========");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}