学习java的第二十八天,List子接口、List实现类ArrayList类的使用

一、List子接口

  • 什么是list子接口?
  1. 特点:有序、有下标、元素可以重复
  2. 主要方法: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,剩下的便是查找的方法,需要多注意两个之间的区别。


注:文章仅做个人学习日记,不做学习建议,学习来源:千峰教育

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值