2、Java集合框架之List

2、Java集合框架之List

(1)List集合的特点:

  • 有序、有下标
  • 元素可以重复

(2)List子接口的使用案例一

  • 添加元素
    //创建集合对象
        List list=new ArrayList ();
        //1、添加元素
        list.add ("苹果");
        list.add ("华为");
        list.add (0,"小米");
        System.out.println (list.size ());
        System.out.println (list.toString ());

在这里插入图片描述
从结果上我们可以验证list集合的有下标以及有序性

  • 删除测试
        System.out.println ("--------删除测试--------");
        //2、删除元素
//        list.remove ("苹果");
        list.remove (1);
        System.out.println (list.size ());
        System.out.println (list.toString ());

在这里插入图片描述

  • 遍历操作

由于list是collection的子接口因此list也支持增强for以及迭代器iterator来遍历集合;除此之外,因为list有下标因此支持for操作

  • 使用for操作
 		System.out.println ("--------使用for遍历--------");
        for(int i=0;i<list.size ();i++){
            System.out.println (list.get (i));
        }
  • 使用增强for操作
		System.out.println ("--------使用增强for遍历--------");
        for(Object o:list){
            String s=(String)o;
            System.out.println (o.toString ());
        }
  • 使用迭代器遍历
		System.out.println ("--------使用迭代器遍历--------");
        Iterator iterator=list.iterator ();
        while (iterator.hasNext ()){
            String s= (String) iterator.next ();
            System.out.println (s.toString ());
        }
  • 使用列表迭代器从前往后
		System.out.println ("--------使用列表迭代器从前往后--------");
        ListIterator listIterator=list.listIterator ();
        while (listIterator.hasNext ()){
            System.out.println (listIterator.nextIndex ()+":"+listIterator.next ());
        }
  • 使用列表迭代器从后往前(逆向遍历即判断时候有前一个元素倒过去遍历)
 		System.out.println ("--------使用列表迭代器从后往前--------");
        while (listIterator.hasPrevious ()){
            System.out.println (listIterator.previousIndex ()+":"+listIterator.previous ());
        }
  • 判断
//判断
        System.out.println (list.contains ("小米"));
        System.out.println (list.isEmpty ());
  • 获取位置
//获取位置
        System.out.println (list.indexOf ("华为"));

(3)所有运行测试的结果
在这里插入图片描述
(5)代码汇总

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * List子接口的使用
 * 特点:1、有序、有下标 2、可以重复
 * @author LYM
 * @date 2021/3/10 13:28
 */
public class Demo3 {
    public static void main(String[] args) {
        //创建集合对象
        List list=new ArrayList ();
        //1、添加元素
        list.add ("苹果");
        list.add ("华为");
        list.add (0,"小米");
        System.out.println (list.size ());
        System.out.println (list.toString ());
        System.out.println ("--------删除测试--------");
        //2、删除元素
//        list.remove ("苹果");
//        list.remove (1);
//        System.out.println (list.size ());
//        System.out.println (list.toString ());
        //遍历操作
        /**
         * 由于list是collection的子接口因此list也支持增强for以及迭代器iterator
         * 除此之外,因为list有下标因此支持for操作
       */
        System.out.println ("--------使用for遍历--------");
        for(int i=0;i<list.size ();i++){
            System.out.println (list.get (i));
        }
        System.out.println ("--------使用增强for遍历--------");
        for(Object o:list){
            String s=(String)o;
            System.out.println (o.toString ());
        }
        System.out.println ("--------使用迭代器遍历--------");
        Iterator iterator=list.iterator ();
        while (iterator.hasNext ()){
            String s= (String) iterator.next ();
            System.out.println (s.toString ());
        }
        System.out.println ("--------使用列表迭代器从前往后--------");
        ListIterator listIterator=list.listIterator ();
        while (listIterator.hasNext ()){
            System.out.println (listIterator.nextIndex ()+":"+listIterator.next ());
        }
        System.out.println ("--------使用列表迭代器从后往前--------");
        while (listIterator.hasPrevious ()){
            System.out.println (listIterator.previousIndex ()+":"+listIterator.previous ());
        }
        //判断
        System.out.println (list.contains ("小米"));
        System.out.println (list.isEmpty ());
        //获取位置
        System.out.println (list.indexOf ("华为"));
    }
}

(6)列表迭代器与iterator迭代器的区别

  • ListIterator可以双向遍历、添加、删除和修改元素
  • Iterator只有hasNext()、next()、remove()方法
  • 在这里插入图片描述

(7)List子接口的使用案例二

  • 添加元素
 		//创建集合
        List list=new ArrayList ();
        list.add (20);
        list.add (30);
        list.add (40);
        list.add (50);
        list.add (60);
        list.add (70);
        System.out.println ("元素个数:"+list.size ());
        System.out.println (list.toString ());

在这里插入图片描述

这里我们可以注意到添加的是基本类型数据,其实这里就涉及到了自动装箱的一个原理(将基本类型自动转换为引用类型)

  • 删除操作
		//删除操作:remove方法是根据下标进行删除
        list.remove (0);
        System.out.println ("元素个数:"+list.size ());
        System.out.println (list.toString ());

在这里插入图片描述
那如果我们就是要通过数值来进行删除那应该怎么办呢?其实很简单,我们只需要进行装箱操作即可(转成Object或者Integer),如下:

list.remove ((Object)20);
  • 补充一个方法:subList:返回子集合,含头不含尾
		//补充方法subList:返回子集合,含头不含尾
        List subList=list.subList (1,3);
        System.out.println (subList.toString ());

在这里插入图片描述
♥后面一起详细学习List的实现类ArrayList♥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值