一.List集合的概述和特点
List集合的概述
有序集合,这里的有序指的是存取顺序
用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
与Set集合不同,列表通常允许重复的元素
List集合的特点
存取有序
可以重复
有索引
二.List集合的特有方法【应用]
方法介绍
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
1.add方法
//void add(int index,E element) 在此集合中的指定位置插入指定的元素
//细节:原来索引上的元素会依次往后移
public static void main(String[] args) {
//1.创建一个集合
List<String> list = new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("bbb");//1
list.add("ccc");
//void add(int index,E element) 在此集合中的指定位置插入指定的元素
//细节:原来索引上的元素会依次往后移
list.add(1,"QQQ");
System.out.println(list);//[aaa, QQQ, bbb, ccc]
}
2.remove方法
//E remove(int index) 删除指定索引处的元素,返回被删除的元素
String remove = list.remove(1);
System.out.println(remove);//QQQ
System.out.println(list);//[aaa, bbb, ccc]
System.out.println("------------------");
细节
List系列集合中的两个删除的方法 1.直接删除元素 2.通过索引进行删除 删除元素 因为在调用方法的时候,如果方法出现了重载现象 优先调用,实参跟形参类型一致的那个方法。
remove有二种方法 第一种是直接根据索引来删除
public static void main(String[] args) {
//1.创建集合并添加元素
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//2.删除元素
//请问:此时删除的是1这个元素,还是1索引上的元素?
//为什么?
//因为在调用方法的时候,如果方法出现了重载现象
//优先调用,实参跟形参类型一致的那个方法。
list.remove(1);
System.out.println(list);
}
第二种是根据元素来删除
//手动装箱,手动把基本数据类型的1,变成Integer类型
Integer i = Integer.valueOf(1);
list.remove(i);
System.out.println(list);//[2, 3]
3.set方法
//E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 String str = list.set(1, "www"); System.out.println(str);//bbb System.out.println(list);//[aaa,www, ccc] System.out.println("------------------");
4.get方法
// E get(int index) 返回指定索引处的元素
String s = list.get(1);
System.out.println(s);//www
System.out.println(list);//[aaa,www, ccc]
}
三.List集合的五种遍历方式【应用】
迭代器
列表迭代器
增强for
Lambda表达式
普通for循环
1.迭代器方法
public static void main(String[] args) {
//创建集合并添加元素
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
// 1.迭代器
Iterator<String> it=list.iterator();
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
2.增强for
//2.增强for
//下面的变量s,其实就是一个第三方的变量而已。
//在循环的过程中,依次表示集合中的每一个元素
for (String s : list) {
System.out.println(s);
}
3.lambda表达式
//3.Lambda表达式
//forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素
//并把每一个元素传递给下面的accept方法
//accept方法的形参s,依次表示集合中的每一个元素
list.forEach(( s)->System.out.println(s));
4.普通for循环
//4.普通for循环
//size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
5.列表迭代器
//获取一个列表迭代器的对象,里面的指针默认也是指向0索引的
//额外添加了一个方法:在遍历的过程中,可以添加元素
ListIterator <String> it=list.listIterator();
while(it.hasNext()){
String str = it.next();
System.out.println(str);
if("bbb".equals(str)){
it.add("hhh");
}
}
System.out.println(list);//[aaa, bbb, hhh, ccc]