List:
List接口是Collection的一个子接口,List内部包含Collection接口中的所有方法,除此之外也与属于自己特有的方法。
List接口的特点:有序(存储和取出元素的顺数一致)、可重复(可以存储重复的元素)、有索引值。
-
正是因为List有索引,所有有一些自己独特的方法:
void add(int index,Object obj)//向结合index的位置添加一个obj元素
get(int index) //获取index位置的元素
set(int index,Object obj) //修改集合中index位置的值为obj
remove(int index) // 删除index位置的元素
int indexOf(Object obj) //获取obj元素在集合中所在的第一个位置
List subList(int fIndex,int eIndex) //获取集合中截取一个从findex到eIndex-1的新的集合 -
List接口的实现类
ArrayList: 底层使用一个数组来保存元素,增删的时候会建立新的数组,其增删的效率低。
LinkedList:底层使用链表的存储方式,增删的效率高。
Iterator(迭代器)
- Iterator迭代器,用来遍历出集合中的所有元素。它就类似一个指针,其实位置是集合的第一个元素的前面。
- Iterator的两个重要方法:hasNext()、next()
hasNext()判断集合是否有下一个值,有的话就将指针向后移一位。
next()是用来取出下一个值,一般为hasNext()判断是否有下一个值,有的话就使用next()将这个值取出来。
public class TestList {
public static void main(String[] args) {
List<String> list01 = new ArrayList();
list01.add("AA");
list01.add("BB");
list01.add("CC");
list01.add("DD");
list01.add("DD");//list里面的元素可以重复
System.out.println(list01);
//测试带有索引的增加,在第一个位置增加一个元素
list01.add(0,"aa");
System.out.println(list01);
//测试带set方法,修改索引值为2的元素为“bb”
list01.set(2,"bb");
System.out.println(list01);
//测试get方法,获取索引值为3的元素
System.out.println(list01.get(3));
//测试remove方法,移除索引值为1 的元素
list01.remove(1);
System.out.println(list01);
//测试indexOf,获取DD所在位置
int loc = list01.indexOf("DD");
System.out.println(loc);//获取的为第一个DD所在的位置
//List subList(int fIndex,int eIndex)
System.out.println("截取的集合:"+list01.subList(2,4));
//遍历list,有三种方法:Iterator,增强for,for
//方法一:Iterator方法遍历
Iterator<String> it = list01.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("--------------------");
//增强for
for(String s :list01){
System.out.println(s);
}
System.out.println("--------------------");
//因为list有索引,所以可以使用for
for(int i = 0;i<list01.size();i++){//在集合中获取集合的长度使用size方法,数组使用length方法
System.out.println(list01.get(i));
}
}
}
如有错误,希望大家帮忙改正,康桑阿米达~
2019年8月9日上午的学习笔记。