和Collection相比,它的特点:有序、有下标、元素可以重复。
除了可以调用Collection里的方法外,还可以调用自身的方法:
- void add (int index,0bject o) :在 index位置插入对象o。
- boolean addAll(int index, Collection c) :将一个集合中的元素添加到此集合中的index位置。
- Object get(int index):返回集合中指定位置的元素。
- List subList (int fromIndex, int LoIndex) :返回fromIndex和toIndex之间的集合元素。
直接来看代码:
package com.collections;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Demo02 {
public static void main(String[] args) {
List list = new ArrayList();
// 添加元素
list.add("苹果");
list.add("小米");
// list.add(int index,element) index指定元素位置
list.add(0,"华为");
System.out.println("元素个数为:"+list.size());
System.out.println(list.toString());
// 删除元素
// list.remove("苹果");
// 根据下标元素删除
list.remove(0);
System.out.println("元素个数为:"+list.size());
System.out.println(list.toString());
// 3.遍历
// 3.1for循环
System.out.println("---------3.1for循环---------------");
for (int i = 0; i <list.size() ; i++) {
String s = (String)list.get(i);
System.out.println(s);
}
// 3.2增强for循环
System.out.println("---------3.2增强for循环--------------");
for (Object object:list) {
String s = (String)object;
System.out.println(s);
}
System.out.println("---------3.3迭代器---------------");
// 3.3迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()){
String s = (String) iterator.next();
System.out.println(s);
}
// 3.4列表迭代器:listIterator。和Iterator的区别:可以往前或往后遍历、添加、删除和修改元素
System.out.println("---------3.4列表迭代器:listIterator---------------");
ListIterator listIterator = list.listIterator();
System.out.println("--------------从前往后遍历------------------------");
while (listIterator.hasNext()){
System.out.println(listIterator.nextIndex()+":"+listIterator.next());
} System.out.println("--------------从后往前遍历------------------------");
while (listIterator.hasPrevious()){
System.out.println(listIterator.previousIndex()+":"+listIterator.previous());
}
// 4 判断
System.out.println(list.contains("苹果"));
System.out.println(list.isEmpty());
// 5 获取下标位置indexOf
System.out.println(list.indexOf("小米"));
}
}
运行结果:
注意:list因为有下标,可以进行for循环,而且它还有一种新的遍历方法,列表迭代器(listIterator)如上 ,它是一种可以往前或往后遍历甚至是可以添加、删除和修改元素的迭代器。
当List添加数字数据时:
package com.collections;
import java.util.ArrayList;
import java.util.List;
public class Demo03 {
public static void main(String[] args) {
List list = new ArrayList();
// 1.添加数字数据,自动装箱 list.add(new Integer(20))
list.add(20);
list.add(30);
list.add(40);
list.add(50);
list.add(60);
System.out.println("元素个数为:"+list.size());
System.out.println(list.toString());
// 2.删除元素
// list.remove(20); 使用数字数据时,删除功能如果直接输20会抛出下标越界异常
list.remove(0);
// 非要用20删可以这么删,或者转成Object类型
list.remove(new Integer(20));
list.remove((Object)20);
System.out.println("删除后:"+list.size());
System.out.println(list.toString());
// 3.补充方法subList:返回子集合,含头不含尾
List subList = list.subList(1, 3);
System.out.println(subList.toString());
}
}
添加add()方法中,实现了自动装箱,也就是New Integer(20)删除也就是remove()方法里的属性代表的元素下标,如果非要用元素值删除,参考上述代码。
还有补充方法subList方法(返回子集合,含头不含尾)
运行结果:
List实现类:三种