List是Collection的子接口。
因为List接口下面的方法比COllection多。List在Collection基础之上添加了很多的方法。
因为是是继承关系Collection下的方法List也可以使用。
List下存的数据是有序的可以重复的。
List是接口需要ArrayList实现接口下的方法。
增:
void add(int index, E e);在指定的位置上插入一个元素
boolean addAll(int index, Collection<? extends E> e);将一个集合插入到另外一个集合的指定的位置
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
//在指定的位置上插入一个元素
List<String> list = new ArrayList<>();//创建一个ArrayList对象来实现List接口
list.add("张三");
list.add("李四");
list.add("王五");
list.add("张三");//数据输入是有序可重复的
list.add(2,"小黑");//在索引下标为2的位置插入一个元素
System.out.println(list);//输出结果[张三, 李四, 小黑, 王五, 张三]
//将一个集合插入到另外一个集合的指定的位置
List<String> list1 = new ArrayList<>();
list1.add("老三");
list1.add("老四");
list1.add("老五");
list.addAll(3,list1);//在索引下标为3的位置插入一个集合
System.out.println(list);//输出结果[张三, 李四, 小黑, 老三, 老四, 老五, 王五, 张三]
}
}
删:
Collection删除的时候,通过元素来删除的。 remove(Object obj)
E remove(int index);通过索引来删除指定的元素。返回的是被删除的元素
import java.util.ArrayList;
import java.util.List;
public class Demo2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//通过索引来删除指定的元素。返回的是被删除的元素
list.add("张三");
list.add("李四");
list.add("王五");
list.add("张三");
//删除索引下标为0的元素
System.out.println(list.remove(0));//输出结果张三,返回被删除的数据
System.out.println(list);//输出结果[李四, 王五, 张三]
list.remove("李四");//删除的时候,通过元素来删除的。
System.out.println(list);//输出结果[王五, 张三]
}
}
改:
E set(int index, E e); 通过指定的索引修改数据元素,返回值是被修改的原数据
import java.util.ArrayList;
import java.util.List;
public class Demo3 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//通过指定的索引修改数据元素,返回值是被修改的原数据
list.add("张三");
list.add("李四");
list.add("王五");
list.add("张三");
System.out.println( list.set(2,"老王"));//输出结果王五,返回被修改的数据
System.out.println(list);//输出结果[张三, 李四, 老王, 张三]
}
}
查:
E get(int index); 通过索引下标去获取指定元素
int indexOf(Object obj);通过元素获取指定的下标的
int lastIndexOf(object obj);通过元素获取最后一次出现的元素的下标
List<E> subList(int formIndex, int toIndex);截取一部分出来
import java.util.ArrayList;
import java.util.List;
public class Demo4 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//通过索引下标去获取指定元素
list.add("张三");
list.add("李四");
list.add("王五");
list.add("张三");
System.out.println(list.get(0));//输出结果张三
System.out.println(list.get(1));//输出结果李四
System.out.println(list.get(2));//输出结果王五
System.out.println(list.get(3));//输出结果张三
//通过元素获取指定的下标的
System.out.println(list.indexOf("李四"));//输出结果1
//通过元素获取最后一次出现的元素的下标
System.out.println(list.lastIndexOf("张三"));//输出结果3
//截取一部分出来要下标为1的元素不要下标为3的元素
System.out.println(list.subList(1,3));//输出结果[李四, 王五]
}
}
List集合里存对象
import java.util.ArrayList;
import java.util.List;
class User {//声明一个类在类下面写属性
String name;
int age;
public User(String name, int age) {//使用有参构造对属性初始化值
this.name = name;
this.age = age;
}
@Override
public String toString() {//使用toString方法把打印的内存地址改为字符
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Demo5 {
public static void main(String[] args) {
List<User> list = new ArrayList<>();//在List集合中存对象
list.add(new User("小黑",28));
list.add(new User("小红",27));
list.add(new User("小黄",26));
list.add(new User("小花",25));
System.out.println(list);//输出结果[User{name='小黑', age=28}, User{name='小红', age=27}, User{name='小黄', age=26}, User{name='小花', age=25}]
获取下标为1 的元素
User user = list.get(1);
System.out.println(user);//输出结果User{name='小红', age=27}
}
}