【Java集合专项】-List(ArrayList和LinkedList)基础(1)

一、总览

二、集合

(1)什么是集合?

概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的工作。

(2)集合和数组的区别?

 (a)数组长度固定,集合长度不固定。

(b)数组可以存储基本类型和引用类型,集合只能存储引用类型。

 三、List实现类

(1)ArrayList

I 、特点

a) 数组结构实现,查询快,增删慢

b) 运行速率快,线程不安全

2、常用方法

(a) 创建集合并添加

        //创建集合
        ArrayList arrayList = new ArrayList();
        //增加元素
        Student s1 = new Student("赵晓东",20);
        Student s2 = new Student("赵晓楠",21);
        Student s3 = new Student("赵小溪",22);
        Student s4 = new Student("赵晓波",23);
        arrayList.add(s1);
        arrayList.add(s2);
        arrayList.add(s3);
        arrayList.add(s4);
        System.out.println("arrayList元素个数"+arrayList.size());

(b)删除元素

        //删除元素
        System.out.println("============删除元素==============");
        arrayList.remove(s1);
        System.out.println("arrayList的元素个数"+arrayList.size());
        System.out.println(arrayList);

(c)遍历元素

第一种方式:使用迭代器

        //1、使用迭代器
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

第二种方式:使用集合迭代器

        //2、使用集合迭代器
        ListIterator listIterator = arrayList.listIterator();
        while (listIterator.hasPrevious()) {
            listIterator.next();
        }

第三种方式:使用for增强

        //3、使用for增强
        System.out.println("=============使用for增强===============");
        for (Object stu: arrayList
             ) {
            System.out.println(stu);
        }

第四种方式:使用for循环

        //4、使用For循环
        for (int i = 0; i <arrayList.size() ; i++) {
            System.out.println(arrayList.get(i));
        }

(c)判断

        System.out.println(arrayList.contains(s1));
        System.out.println(arrayList.contains(s2));
        System.out.println(arrayList.isEmpty());

(d)查找(查找元素所在序号)

System.out.println(arrayList.indexOf(s1));

(2)LinkedList

a) 增删快,查询慢 

LinkedList的常用方法和ArrayList的一样。

 (3)ArrayList和LinkedList的区别

 (1)存储结构

ArrayList为数组的方式,LinkedList为链表的方式。

Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度为O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。

LinkedList的是基于链表的方式,所以增删的时间复杂度为O(1),但是查询会很慢。

(2)效率不同

当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。

当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。

猜你喜欢

转载自blog.csdn.net/MyxZxd/article/details/110334116
今日推荐