欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java集合List基本使用详解

程序员文章站 2022-05-20 10:53:50
...

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类)。