集合框架

 集合框架

 一、集合概念

对象的容器,定义了对多个对象进行操作的常用方法。可以实现数组的功能

 

和数组的区别:

- 数组的长度固定,集合长度不固定
- 数组可以存储基本类型和引用类型,集合只能存储引用类型

 

位置在java.util.*;

 

## 二、Collection体系集合

- Collection是该体系结构的根接口,代表一组对象,称为“集合”。
- List接口的特点:有序,由下标,元素可重复
- Set接口的特点:无序,无下标,元素不能重复

 

Collection方法:

- boolean add (Object obj) //添加一个对象
- boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中
- void clear() //清空此集合中的所有对象
- boolean contains(Object o)//检查此集合中是否包含o对象
- boolean equals(Object o)//比较此集合是否与指定对象相等
- boolean isEmpty()//判断此集合是否为空
- boolean remove(Object o)//判断此集合是否移除o对象
- int size() //返回此集合中的元素个数
- Object[] toArray() //将此集合换成数组

 

List方法:

- void add(int index,Object o)//在index位置插入对象o
- boolean addAll(int index,Collection c)//将一个集合中的元素添加到此集合当中的index位置
- Object get(int index )// 返回集合中指定位置的元素
- List subList(int fromIndex,int toIndex)//返回fromIndex和toIndex之间的集合元素

 

### 1、List实现类

- ArrayList:
- 数组结构实现,查询快,增删慢
- JDK1.2版本,运行速率快、线程不安全

- Vector:
- 数组结构实现,查询快,增删慢
- JDK1.0版本,运行速率慢、线程安全

- LinkedList:
- 链表结构实现,增删快,查询

### 2、Set实现类

- HashSet【重点】:
- 基于HashCode计算元素存放的位置。
- 当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入

- TreeSet:
- 基于排列顺序实现元素不重复
- 实现了SortedSet接口对集合元素自动排序
- 元素对象的类型必须实现Comparable接口,指定排序规则
- 通过CompareTo方法确定是否为重复元素。

 

## 三、Map集合

Map接口的特点:

- 用于存储任意键值对(Key-Value)
- 键:无序、无下标、不允许重复(唯一的)
- 值:无序,无下标、允许重复

 

常用方法:

```java
1、V put(K key ,V value) 将对象存入到集合中,关联键值。key重复则覆盖原值。
2、Object get(Object key) 根据键获取对应的值
3、Set<K> 返回所有key
4、Collection<V> values() 返回包含所有值的Collection集合
5、Set<Map.Entry<K,V>> 键值匹配的Set集合
```

 

### 1、HashMap实现类

特点:线程不安全,运行效率快;允许null作为key或者是value

put方法:

```总结:
put V put(){
return putVal(hash(key),key,value,false,true)
}
```

总结

```
1、HashMap刚创建时,table是null,为了节省空间,当添加第一个元素时,table调整为16
2、当元素个数大于阈值(16*0.75=12)时,会进行扩容,扩容为原来的的2倍,目的是减少调整元素的个数
3、jdk1.8 当每个链表长度大于8,且元素个数大于64时,会调整红黑树,目的是为了提高效率
4、jdk1.8 当链表长度小于8时,调整成链表
5、jdk1.8以前 链表是头插入,jdk1.8以后,链表是尾插入。
```

 

### 2、Hashtable实现类

特点:线程安全,运行效率慢;不允许null作为key或者是value

### 3、Properties实现类

特点:Hashtable的子类,要求key和value都是String类型,通常用于配置文件的读取

### 4、TreeMap是实现类

实现了SortedMap接口,可以对key自动排序

上一篇:java Set集合


下一篇:Collection集合