一、集合容器概述
1. 什么是集合,集合和数组的区别
集合:用于存储数据的容器。
集合和数组的区别:
(1)数组是固定长度的;集合是可变长度的。
(2)数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。
(3)数组是Java语言中内置的数据类型,是线性排列的,执行效率和类型检查都比集合快,集合提供了众多的属性和方法,方便操作。
联系:通过集合的toArray()方法可以将集合转换为数组,通过Arrays.asList()方法可以将数组转换为集合
2. List、Set、Map三者区别
Java 集合容器分为 Collection 和 Map 两大类,Collection集合的子接口有Set、List、Queue,Map接口不是collection的子接口。
// todo wsz 增加配图
Collection集合主要有List、Set和Queue接口
List:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用的实现类有 ArrayList、LinkedList 和 Vector。
Set:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null元素,必须保证元素唯一性。常用实现类有 HashSet、LinkedHashSet 以及 TreeSet。
Queue/Deque,则是 Java 提供的标准队列结构的实现,除了集合的基本功能,它还支持类似先入先出(FIFO, First-in-First-Out)或者后入先出(LIFO,Last-In-First-Out)等特定行为。常用实现类有ArrayDeque、ArrayBlockingQueue、LinkedBlockingDeque
// todo wsz 添加配图
Map是一个键值对集合,存储键和值之间的映射。Key无序,唯一;value 不要求有序,允许重复。Map没有继承Collection接口,从Map集合中检索元素时,只要给出键对象,就能返回对应的值对象。
常用实现类有HashMap、LinkedHashMap、ConcurrentHashMap、TreeMap、HashTable