一、什么是集合?
在Java中,集合(Collection)指的是一组数据容器,它可以存储多个对象,并且允许用户通过一些方法来访问与操作这些对象。Java提供了一系列接口和类来支持不同类型的集合。 Collection
接口,主要用于存放单一元素; Map
接口,主要用于存放键值对。
二、Java集合和数组的区别?
数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。
- 数组存放基本数据类型和对象,而集合类存放的都是对象,集合类不能存放基本数据类型。数组和集合存放的对象皆为对象的引用地址;
- 数组容易固定无法动态改变,集合类容量动态改变;
- 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数;
- 集合有多种实现方式和不同适用场合,数组仅采用顺序表方式
- 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率。
三、Java集合框架
四、List
继承自Collection
,是一个有序的集合,可以包含重复元素。
实现类:
- ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)
- LinkedList:双向链表实现,增删快,查询慢 (线程不安全)
- Vector:数组实现,重量级 (线程安全、使用少)
ArrayList和LinkedList区别
ArrayList
是基于动态数组实现的,而LinkedList
是基于双向链表实现的。它们都实现了List
接口。
ArrayList | LinkedList | |
获取指定元素 | 速度很快 | 需要从头开始查找元素 |
添加元素到末尾 | 速度很快 | 速度很快 |
在指定位置添加/删除 | 需要移动元素 | 不需要移动元素 |
内存占用 | 少 | 较大 |
ArrayList
适合随机访问,