List是一个抽象类,我们一般使用其实现类ArrayList,我们一般这样定义,这样就更加面向接口编程,其中,我们把List定义成带泛型的,
也就是说存放到list中的元素类型应该是String类型,但这并不是绝对的,我们也可以通过泛型技术存放进别的类型的数据。
另外List主要如下特性:
1、插入的数据是有序插入的
2、插入的数据是可以重复的,跟set集合不同,set集合更多是根据hashcode来判断的,元素是不允许重复的
package three.day.collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class ListTs1 {
public static void main(String[] args) {
//使用泛型,只能存放String类型的数据(暂且这样理解,利用反射技术也可以插入其他类型的数据)
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
//在指定
list.add(0, "6");
String[] str = { "001", "002"};
List<String> list2 = new ArrayList<String>();
for (int i = 0; i < str.length; i++) {
list2.add(str[i]);
}
//将另外一个list对象的数据整体加入
list.addAll(list2);
//在指定位置插入
list.addAll(0, list2);
// list.clear();
//判断list中是否存在"hello"这个元素
list.contains("hello");
System.out.println("--------------------------------");
for (int i = 0; i < list.toArray().length; i++) {
System.out.println(list.toArray()[i]);
}
//查找第一次出现"001"这个元素的下标
System.out.println(list.indexOf("001"));
//通过普通迭代器遍历list集合
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next().toString());
}
System.out.println("--------------------------------");
//通过list迭代器遍历list集合,效果与普通迭代器一样
ListIterator<String> itStr = list.listIterator();
while (itStr.hasNext()) {
System.out.println(itStr.next());
}
}
}
定义一个不带泛型的list
public void testList2() {
List list = new ArrayList();
list.add("1");
list.add(1);
}