List集合
概述
List是一个有序的Collection(List是Collection的子接口),使用此接口能够精确的控制每个元素插入的位置,能够通过索引(类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组可重复、有序(插入顺序)的对象。
特点
- 元素有下标,可以通过下标访问元素
- 元素是有序的(存入集合的顺序和取出的顺序一定相同)
- 元素可以重复(包括null)
List方法测试
ListDemo
package collection;
import com.sun.org.apache.xpath.internal.SourceTree;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* @author少珩
* @data 2022/3/23 21:12
* java.util.List接口
* List继承自Collection接口,是最常用的一类集合,
* 特点:可以存放重复的元素
* List提供了一套通过下标操作元素的方法
* 常用实现类:
* java.util.ArrayList:内部使用的是数组,查询性能很好
* java.util.LinkedList:内部使用的是链表,增删性能很好
* 对性能要求不是特别苛刻的情况下,通常使用ArrayList
*/
public class ListDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//List<String> list = new LinkedList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add("five");
System.out.println(list);
//获取集合中的第三个元素
String str = list.get(2);//与数组获取元素的功能一致 String str = arr[2];
System.out.println(str);
//list使用传统for循环遍历集合
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
/*
* E set(int index,E e)
* 将给定的元素e设置到指定的位置index上,返回值为该位置原来的元素
* 替换元素的操作
* */
String old = list.set(1, "six");//返回第二个位置原有的内容two
System.out.println(old);//two
System.out.println(list);//[one, six, three, four, five]
//在不创建新的集合的前提下,将集合元素翻转
/*
* 正数 倒数
* 0 4 = 4-i
* 1 3 = 4-1
* 2 2 = 4-2
* 此处的4可以通过list.size-1获取
* */
for(int i=0; i<list.size()/2;i++){//i:0
//获取正数位置上的元素
//String e = list.get(i);//one
//将获取到的正数的位置放置到倒数的位置
//e = list.set(list.size()-1-i,e);//five
//将倒数的元素设置正数的位置
//list.set(i, e);
list.set(i,list.set(list.size()-1-i,list.get(i)));
}
System.out.println(list);
//翻转集合 Collections是集合专用的工具类
Collections.reverse(list);
System.out.println(list);
}
}
ListDemo2
package collection;
import java.util.ArrayList;
import java.util.List;
/**
* List重载了add,remove方法
*/
public class ListDemo2 {
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add("five");
//[one, two, three, four, five]
System.out.println(list);
/*
* void add(int index,E e);
* 将给定的元素e插入到指定的位置i处
* */
list.add(3,"six");
//[one, two, three, six, four, five]
System.out.println(list);
/*
* E remove(int index);
* 删除指定下标位置i的元素,并将删除元素返回
* */
String old = list.remove(2);
System.out.println(old);
//[one, two, six, four, five]
System.out.println(list);
}
}
ListDemo3
package collection;
import java.util.ArrayList;
import java.util.List;
/**
* List subList(int start,int end)
* 获取当前集合中指定范围内的子集
*/
public class ListDemo3 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for(int i=0;i<10;i++){
list.add(i);
}
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
System.out.println(list);
//获取集合的子集[3-7]
//指定的范围参数,含头不含尾
List<Integer> subList = list.subList(3, 8);
//[3, 4, 5, 6, 7]
System.out.println(subList);
//将子集的元素都扩大十倍
for(int i = 0;i<subList.size();i++){
subList.set(i, subList.get(i)*10);
}
//subList:[30, 40, 50, 60, 70]
System.out.println("subList:"+subList);
/*
* 对子集的元素的操作,就是对原集合的操作
* */
//list:[0, 1, 2, 30, 40, 50, 60, 70, 8, 9]
System.out.println("list:"+list);
//清除集合中1-8这部分的元素
list.subList(1, 9).clear();
//[0, 9]
System.out.println(list);
}
}