1.数据结构
数组
- 特点:存储区间连续的,内存占用严重
- 优点:随机读取和修改效率高。 查询来说时间复杂度O(1)
- 缺点:插入和删除速度慢。时间复杂度为O(N)
链表
- 特点:存储区间是离散的。内存利用率高
- 优点:插入和删除速度快
- 缺点:不能随机查找。查询效率低
树
- 特点:本身具备了排序能力
HashMap
- HashMap就是采用了数组+链表+红黑树的结构。
- 通过分析得知可以通过HashMap中的key得到数组的索引,加快了CRUD的所有操作。
2. HashMap
根据Key获取对应的value。
常用方法
|-----------------|----------------------------------|
| 方法名 | 说明 |
| put( ) | 添加,原本key值对应有value,在使用put方法就会变成修改 |
| remove() | 删除 |
| containsKey() | 判断key是否存在 |
| containsValue() | 判断value是否存在 |
遍历方法
java
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1001,"张三");
map.put(1003,"王二");
map.put(1001,"麻子"); //修改
map.remove(1001); //删除
boolean f = map.containsKey(1001); //判断key是否存在
boolean f2 = map.containsValue("麻子");//判断value是否存在
//遍历方法一:
Set<Integer> set = map.keySet();
for (Integer integer : set) {
System.out.println(map.get(integer)); //get(key) 根据Key获取对应的value
}
//遍历方法二:
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
System.out.println(entry.getKey()+"--"+entry.getValue());
}
}
3. HashTable
使用方法同HashMap差不多
常用方法
|-----------------|----------------------------------|
| 方法名 | 说明 |
| put( ) | 添加,原本key值对应有value,在使用put方法就会变成修改 |
| remove() | 删除 |
| containsKey() | 判断key是否存在 |
| containsValue() | 判断value是否存在 |
HashTable和HashMap的区别
-
HashMap是线程不安全的。HashTable是线程安全的
-
HashMap效率高,HashTable效率低
-
HashMap中的key和value都可以为null,HashTable不可以为null。