目录
首先提个问题:集合是干什么的?
字面上呢就是一个存放引用数据类型的一个容器,集合中存放的是引用类型(对象的内存地址),集合不能储存基本数据类型,如果你看到了那就是系统自动进行装箱拆箱操作了主要是方便我们操作数据的。
集合分为两个:
一:Collection
List
Set
二:Map
Map(映射)用于保存具有映射关系的数据,Map保存着两组数据,key和value key和value都可以是任意的引用数据类型,但key是不能重复的。
首先先创建一个集合
List
list.add(E e) | 向list里添加元素,元素可以是null,元素可以重复添加 |
list.addAll(list2) | 将list2添加到list后面 |
list.get(int index) | 从List里获取下标为index的元素 |
list.remove(int index) | 从List里删除下标为index的元素 |
list.removeAll() | 删除List里所有元素 |
list.contains(E e) | 判断list集合里是否有e元素 |
list.isEmpty() | 判断list集合是否为空 |
List.of(数组) | 把这个数组当作一个元素存到集合中(数组转集合) |
1.数据有顺序,按照添加的顺序排列
2.数据可以重复
- public class ArrayConvertUtil {
- public static Object[] toArrayConvert(List list){
- // return list.toArray();
- Object[] objects=new Object[list.size()];
- for (int i = 0; i
size() ; i++) { - objects[i]=list.get(i);
- }
- return objects;
- }
- public static List toListConvert(Object [] arr){
- // return List.of(arr);
- List list = new ArrayList(arr.length);
- for (Object o : arr) {
- list.add(o);
- }
- return list;
- }
- }
Vertor中的方法都是被synchronized所修饰的,这就代表了他的效率会比较低
ArrayList和LinkedList的区别:
ArrayList是基于动态数组实现的集合,LinkedList是基于双链表实现的集合。
查找时ArrayList速度比LinkedList快,增加或删除时LinkedList比ArrayList速度快
ArrayList是通过下标找到元素,LinkedList是移动指针遍历每个元素找到需要的元素
相同点:
都是线程异步的不安全线程的集合,都实现了List接口(继承了Collection)
ArrayList与Vector的区别:
ArrayList:线程异步,线程不安全,性能高
Vertor:线程同步,线程安全,性能低
相同点:
都实现了List接口,都是有序集合。
Collection和Map的区别:一个是单向链表,一个是双向链表。