Java集合List基本使用详解

Java集合List基本使用详解

List实现类

  • ArraryList:
    • 数组结构实现,查询快、增删慢;
    • JDK1.2版本,运行效率块、线程不安全
  • Vector:
    • 数组结构实现,查询快、增删慢;
    • JDK1.0版本,运行效率慢、线程安全
  • LinkedList:
    • 链表结构实现,增删快,查询慢

List接口的特点

之前在我的有关于collection文章中有写到关于List和Set的图片,上面简单的列举了其各自的接口的特点(如果没看的同学可以点击这里进行查看)

特点:有序、有下标、元素可重复

因为List元素都是有下标的,所以相较于collection集合里的元素就会有更多的操作空间,也即多了很多方法来通过下标对元素进行添加、查找、修改、删除、遍历等基本操作(具体有哪些玩法大家可以通过JDK1.8API介绍)。其中关于遍历的玩法更是多样,不仅可以进行正向遍历,还可以进行逆向遍历。其中提供的列表迭代器(listIterator)相较于普通的迭代器(Iterator)玩法也是更加灵活。

老规矩,具体的基本玩法还是以代码的 形式展开,其中有关于其注意事项用注释写了出来,因为其中的注意点和collection集合的用法有重复的地方,在这里就不再重复描述,所以强烈建议在学习List接口之前先看看我的上一篇有关collection接口的文章。

测试案例

/**
 * List接口使用
 * 测试数据类型:String
 *
 * @author :twb
 * @// TODO: 2021/3/22
 * @version jdk1.8
 */
public class Demo1 {
    public static void main(String[] args) {
        List list  = new ArrayList<>();

        //添加元素:直接添加和通过下标添加
        //如果添加的是基本数据类型则会进行自动装箱,将基本数据类型转化为对应的包装类(eg:int-->Integer)
        list.add("小米");
        list.add("苹果");
        list.add(0,"华为");
        list.add(1,"oppo");
        System.out.println("集合中的元素个数为:"+list.size());
        System.out.println("打印集合中的元素:"+list.toString());
        System.out.println("-----------------------------------");

        //删除元素
        list.remove("华为");//直接删除元素
//        list.remove(0); //通过下标删除元素
        System.out.println("集合中的元素个数为:"+list.size());
        System.out.println("打印集合中的元素:"+list.toString());
        System.out.println("-----------------------------------");

        //清除
//        list.clear();
//        System.out.println("集合中的元素个数为:"+list.size());

        //遍历:1、for循环遍历  2、增强for循环遍历 3、迭代器遍历  4、list迭代器遍历
        //1、for循环遍历
        for (int i = 0; i < list.toArray().length; i++) {
            System.out.println("for循环遍历:"+" ["+i+"] "+list.get(i).toString());
        }
        System.out.println("-----------------------------------");
        //2、增强for循环遍历
        for (Object o : list) {
            System.out.println("增强for循环遍历:"+o.toString());
        }
        System.out.println("-----------------------------------");
        //3、迭代器遍历
        Iterator iterator =  list.iterator();
        while(iterator.hasNext()){
            System.out.println("迭代器遍历:"+iterator.next().toString());
        }
        System.out.println("-----------------------------------");
        //4、list迭代器遍历
        //list迭代器正向遍历
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            System.out.println("list迭代器正向遍历:"+listIterator.next());
        }
        System.out.println("-----------------------------------");
        //list迭代器逆向遍历
        while(listIterator.hasPrevious()){
            System.out.println("list迭代器逆向遍历:"+listIterator.previous());
        }
        System.out.println("-----------------------------------");

        //判空
        System.out.println(list.isEmpty());//false
        //判元素是否存在
        System.out.println(list.contains("华为"));//false
        System.out.println(list.contains("小米"));//true
        System.out.println("-----------------------------------");
        //获取位置(索引)
        System.out.println("苹果手机的索引为:"+list.indexOf("苹果"));
    }
}

测试结果

集合中的元素个数为:4
打印集合中的元素:[华为, oppo, 小米, 苹果]
-----------------------------------
集合中的元素个数为:3
打印集合中的元素:[oppo, 小米, 苹果]
-----------------------------------
for循环遍历: [0] oppo
for循环遍历: [1] 小米
for循环遍历: [2] 苹果
-----------------------------------
增强for循环遍历:oppo
增强for循环遍历:小米
增强for循环遍历:苹果
-----------------------------------
迭代器遍历:oppo
迭代器遍历:小米
迭代器遍历:苹果
-----------------------------------
list迭代器正向遍历:oppo
list迭代器正向遍历:小米
list迭代器正向遍历:苹果
-----------------------------------
list迭代器逆向遍历:苹果
list迭代器逆向遍历:小米
list迭代器逆向遍历:oppo
-----------------------------------
false
false
true
-----------------------------------
苹果手机的索引为:2

这里我只是通过String类型进行测试,大家也可以参照我的代码去测试一下其他数据类型,例如一些基本数据类型或者是自己写的类(经典Student类)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值