什么是集合
集合也可以说是容器,一个动态的容器,在java中数组也是容器只不过是一个固定长度的容器,一旦存储的数据超过长度就会报错,java集合分为三类List,Set,Map
-
java中都有哪些集合
- List
- list 是接口 父接口为conllection,conllection也是list和set的根接口,list 有序有下标,元素内容可重复,底层用数组实现
- Set
- set 无序无下标 元素不可重复 实现 conllection接口
- Map
- 以键值对形式存放数据 无序无下标 根据key找value
- List
-
ArrayList
ArrayList 实现了List接口 内部由数组实现有序有下标可以理解为一个动态的数组容器,可以通过具体下标获取具体内容 查询块,删除修改慢,非线程安全一般用于查询,ArrayList用的是比较多的
-
LinkedList
LinkedList 实现了List接口 内部由链表方式实现内部由一个node对象来进行存储 查询慢,增加删除快
-
Vector
Vector 实现了List接口 内部由数组实现。和ArrayList方法一样加入了锁,线程安全
-
HashMap
HashMap实现了Map接口 是以键值对形式存放数据 无序无下标元素不可重复的 key可以为null,value也可以为null,内部由数组加链表形式存放 当添加时会用key的hashcode编码调用内部hash方法返回hash值确定数组的下标确定存放位置,开始创建的是容量为16,每次扩容为2的次幂
-
HashSet
HashSet实现了Set接口 无序无下标元素不可重复
内部由HashMap实现 添加时元素为map的key,value为常量object对象 -
TreeSet
TreeSet 实现了Set接口,有序元素不可重复 内部由TreeMap实现
-
TreeMap
TreeMap 实现了Map接口,元素不可重复,key和value都不可为空内部由红黑二叉树实现
说一下ArrayList和LinkedList区别
ArrayList内部由数组实现有序有下标可直接通过下标获取,查询块,增删改慢,LinkedList内部由链表实现增删改慢查询块,一般情况下我们还是用arraylist比较多。因为只是查询数据用的比较多
说一下HashMap和TreeMap区别
==HashMap 和TreeMap都是以键值对的形式存放数据,其中HashMap是无序无下标 元素不可重复,key和value都是可以为null的,treeMap 是以二叉树实现 元素不可为空=
List中常用方法
方法名 | 含义 |
---|---|
add(Object t) | 添加元素 |
get(int index) | 通过下标回去指定元素 |
set(int index,Object t) | 在对应下标出添加指定元素替换 |
clear() | 清空集合中所有内容 |
indexIOf(Object t) | 返回指定内容的下标未找到返回-1 |
isEmpty() | 如果为空集合返回true,否则反之 |
remove(Object t) | 删除指定元素 |
remove(int index) | 删除指定下标的内容 |
toArray | 返回集合的一个Object数组 |
addAll(List l) | 讲指定集合添加到本集合中。包括重复的 |
lastIndexOf(Object t) | 从后往前找指定元素返回下标。未找到返回-1 |
retainAll(object o) | 讲两个集合合并返回两个集合中重复的元素 |
Map中常用方法
方法名 | 含义 |
---|---|
put(T key,T value) | 添加元素以键值对形式 |
get(T key) | 通过key获取value |
clear() | 清空集合中所有内容 |
isEmpty() | 如果为空集合返回true,否则反之 |
remove(T key) | 通过key删除指定元素 |
toArray | 返回集合的一个Object数组 |
keySet() | 返回set集合包含key,可通过key朝招value |