一、List子接口
- 什么是list子接口?
- 特点:有序、有下标、元素可以重复
- 主要方法:add:在index位置插入对象! addall:将一个集合中的元素添加到此集合中的index位置 get:返回集合中指定位置的元素
创建demo01测试List接口的方法
package com.Collection.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/*
List子接口的使用
*/
public class Demo01 {
public static void main(String[] args) {
//创建一个集合
List list = new ArrayList();
//1、添加数据
list.add("苹果");
list.add("西瓜");
list.add("香蕉");
System.out.println(list);
//2、查找数据 get返回指定位置的元素
System.out.println(list.get(2));
//3、插入数据
list.add(1, "葡萄");
System.out.println(list);
//4、打印元素的数据
//4.1、使用增强for循环
for (Object o:list
) {
System.out.println(o);
}
System.out.println("*******************使用迭代器输出*****************");
//4.2、使用列表迭代器,和Iterator的区别,ListItertor迭代器可以向前或者向后遍历,增加删除,修改元素!
System.out.println("************1.使用列表迭代器往前输出***************");
ListIterator it = list.listIterator();
while(it.hasNext()){
System.out.println(it.nextIndex()+":"+it.next());
}
//4.3、使用列表迭代器往后输出
System.out.println("************2.使用列表迭代 器从后到前输出***************");
while (it.hasPrevious()){
System.out.println(it.previousIndex()+":"+it.previous());
}
//5、修改数据
list.set(0, "西瓜"); //下标0的值修改成西瓜
System.out.println(list);
System.out.println(list.indexOf("西瓜"));
}
}
总结: 通过以上实践,顺便使用到了迭代器、列表迭代器,在复习一下,普通的Iterator迭代器有三个方法,分别是hasNext跟next以及remove方法,对应的功能是查找数组内的下一个元素、返回指标的下一个元素、删除当前的元素!而列表迭代器,可以执行从后到前输出,Listiterator,Iterator有的功能列表迭代器都有,而列表迭代器有从后到前等等功能!
二、 List实现类
1、ArrayList
- 数组结构实现,查询快、增删慢
- JDK1.2版本,运行效率快、线程不安全
其中,ArrayList类里面的常用方法我在代码里面演示!
package com.Collection.List;
/**
*
* ArrayList使用
* 存储结构:数组,查找遍历速度快,增删慢
* @author lxt
*/
import com.Collection.Student;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class Arr {
public static void main(String[] args) {
//创建ArrayList集合
ArrayList arrayList = new ArrayList();
//1、增加元素add
System.out.println("---------------------1、增加元素---------------------");
Student s1 = new Student("黄菲菲",15);
Student s2 = new Student("李堂堂",25);
Student s3 = new Student("王五",15);
Student s4 = new Student("李红艳",15);
arrayList.add(s1); //将s1赋值到arrayList这个集合中
arrayList.add(s2);
arrayList.add(s3);
arrayList.add(s4);
//2、遍历元素
//2.1使用for循环遍历元素
System.out.println("---------------------2.1使用for循环遍历元素---------------------");
for (int i = 0; i< arrayList.size(); i++) {
System.out.println(arrayList);
}
//2.2使用增强循环遍历元素
System.out.println("---------------------2.2使用增强循环遍历元素---------------------");
for (Object o:arrayList
) {
Student ss = (Student) o ;
System.out.println(ss);
}
//2.3使用迭代器遍历元素 Iterator
System.out.println("---------------------2.3使用迭代器遍历元素---------------------");
//创建迭代器
Iterator iterator = arrayList.iterator();
while(iterator.hasNext()){
Student next =(Student) iterator.next();
System.out.println(next);
}
//2.4使用列表迭代器倒序遍历元素 ListIterator
System.out.println("---------------------2.4使用列表迭代器遍历元素从前往后---------------------");
//创建列表迭代器
ListIterator lis= arrayList.listIterator();
while(lis.hasNext()){
System.out.println(lis.nextIndex()+":"+lis.next());
}
System.out.println("---------------------2.4使用列表迭代器遍历元素从后往前---------------------");
while(lis.hasPrevious()){
System.out.println(lis.previousIndex()+":"+lis.previous());
}
//3、判断 continue、isEmpty
System.out.println("---------------------3、判断是否存在---------------------");
System.out.println(arrayList.contains(s1)); //判断元素是否存在
System.out.println(arrayList.isEmpty()); //判断集合是否为空
//4、删除元素 remove
System.out.println("---------------------4、删除元素---------------------");
System.out.println("删除前元素:"+arrayList.size());
arrayList.remove(s1); //删除s1这个引用
arrayList.remove(1); //删除下标为1的数组
System.out.println("删除后元素:"+arrayList.size());
System.out.println(arrayList);
//5、查找元素 get、indexOf
System.out.println("---------------------5、查找元素---------------------");
System.out.println(arrayList.get(1)); //查找下标为1的元素,返回元素的内容
System.out.println(arrayList.indexOf(s1)); //返回元素的下标
}
}
结果图
总结:从上面可以看出来,使用ArrayList类的基本方法都在上面了,需要注意点的就是ListIterator迭代器,在执行从后往前遍历元素时,前提条件必须是输出过一次从前往后的遍历,否则无法调用到listIterator,剩下的便是查找的方法,需要多注意两个之间的区别。
注:文章仅做个人学习日记,不做学习建议,学习来源:千峰教育