List集合也可以称为数据结构:线性,数据内容无序,但是数据位置有序,位置从零开始
集合中的继承关系
Collection接口,集合的顶级接口
List接口继承继承Collection接口
Arraylist实现List接口
LinkedList实现List接口
ArrayList
- ArrayList类:有具体的下标,通过下标查询速度快,不适合做增和删
- ArrayList的特点
- 可以理解为可变数组
- 可以存储null
- 下标位置有序内容无序
- 线程异步,熟读块,不安全
- 实现了List接口
- ArrayList是如何实现动态扩容,以及扩容的原则
- 申请一个更大的数组空间
- 利用Arrays,新数组=Arrays.copyOf(源数组,新数组的长度)
- ArrayList集合,不适合存储大量数据
- 空间增长规律
- jre1.6及以下 old*3/2+1;
- jre1.7及以上 old+old>>1;
- 默认容量 为10
ArrayList集合的常用(不是所有,其他的可以查看api帮助文档)api方法
- boolean add(Object)//给集合添加元素
- int size()//获取集合中元素的个数
- Object get(int)//从集合中获取指定下标的元素
- void clear()//清除集合中所有的元素
- boolean isEmpty()//判断集合是否为空,指的是集合内容为空
- list subList(int int)//从指定位置索引,包头不包尾
- Object remove (int)//删除指定下标的元素
- boolean remove(Object)//删除指定的元素
- void remove(collection)//删除指定的子集
public void testMethod(){
ArrayList list = new ArrayList();
list.add("元素一");//给集合添加元素,元素可以是任意类型的对象
int size = list.size();//获取当前集合的长度,即元素个数
String list.get(0);//获取集合中第0号元素
list.clear();//清空当前集合
boolean flag = list,isEmpty();//判断当前集合是否为空
List list1 = list.subList(1,2);//取出从位置1到位置2的元素,包含1不包含2,赋值给list1
Object o = list.remove(0);//删除位置下标为0的元素
boolean flag = list.remove("元素一");//移除"元素一"元素
list.remove(list1);//移除子集list1
}
Hashset
- 集合中内容唯一
- 不适合做增,在添加数据时会遍历比较所有的数据
- 集合中的数据没有循序,遍历查找数据
- 能存储null
- 线程不安全
- set集合越小遍历的速度和效率越好
Hashset集合常用的api
- boolean add();//如果set集合中没有包含此元素即添加此元素
- void clean();//从set中移除所有元素
- boolean contains(object o);//查询set中是否包含此元素
- boolean isEmpty();//检测此set是否为空
- boolean remove(Object o);//如果此set中包含此元素,则移除此元素
- int size();返回set中元素的数量
public void testMethod(){
HashSet hashset = new HashSet();
hashset.add("元素一");//给set集合添加"元素一"
hashset.clean();//清空此set集合
boolean flag = hashset.contains("元素一");//判断此set结婚是否包含此"元素一"元素
boolean flag1 = hashset.isEmpty();//判断此set集合是否为空
boolean flag2 = hashset.remove("元素一");//移除集合中"元素一"元素
int size = hashset,size();//返回此set集合的长度
}
HashMap
- 若干键值对的数据组成的集合
- Map集合中的key也是一个集合,是一个set集合,说明key不能重复
- Map集合中的value也是一个集合,是一个collection集合
- Map集合中的元素有key和value组成的,而value可以是collection集合或Map集合皆可,即集合套集合
Hash集合的常用api
- put(key,value);//向集合中添加键值对
- void clear();//移除集合中所有的键值对
- boolean containsKey(Object Key);//检查集合中是否存在此键值对
- Object get(Object key);//返回当前Key锁代表的值
- boolean isEmpty();//判断当前集合是否为空
- Set keySet();//返回键key的Set集合
- remove (object key);//从集合中移除指定的键值对
- int size();//返回此集合中的键值对数量
- Collection values();//返回一个值的Collection集合
public void testMethod(){
HashMap hashmap = new HashMap();
hashmap.put("元素的Key","元素的Value");//向集合中添加键值对
hashmap.clear();//清空集合中的所有键值对
boolean flag = hashmap.containsKey("元素的Key");//检测此集合中是否存在此键值对
Object obj = hashmap.get("元素的Key");//获取当前Key代表的Value
boolean flag1 = hashmap.isEmpty();//判断当前集合是否为空
Set set = keySet();//获取当前集合的key的Set集合
hashmap.remove(Object Key);//移除当前的键值对
int size = hashmap.size();//获取当前集合的元素(键值对)个数
Collection collection = hashmap.value();//获取当前集合的value的collection集合
}