Skip to content

Commit

Permalink
完善生产者和消费者案例
Browse files Browse the repository at this point in the history
  • Loading branch information
yangchong211 committed Mar 3, 2022
1 parent e98aa42 commit 2dd0ad3
Show file tree
Hide file tree
Showing 31 changed files with 735 additions and 1,034 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import com.yc.other.R;

import java.util.HashMap;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
Expand Down Expand Up @@ -426,7 +427,6 @@ public void run() {
}



private void test8_1() {
Object co = new Object();
System.out.println(co);
Expand Down Expand Up @@ -501,6 +501,10 @@ private void test9_1() {
} catch (Exception e) {
System.err.println("捕获到异常了");
}

HashMap<String,String> map = new HashMap<>();
map.put("1","doubi");
String s = map.get("1");
}

public class ExceptionThread1 implements Runnable {
Expand Down
11 changes: 0 additions & 11 deletions Read/ReadJavaWiki/04.数据结构/00.Java数据结构问题.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
#### 目录介绍
- 3.0.0.3 Collection集合和Map集合的区别?Map集合的特点?说下Map集合整体结构?
- 3.0.0.4 Java集合框架中有哪些类?都有什么特点?集合框架用到Collection接口,这个接口有何特点?
- 3.0.1.0 HashSet和TreeSet的区别?是如何保证唯一值的,底层怎么做到的?
- 3.0.1.3 HashMap有哪些特点,简单说一下?HashMap内部的结构是怎样的?简单说一下什么是桶,作用是什么?
- 3.0.1.4 当有键值对插入时,HashMap会发生什么 ? 对于查找一个key时,HashMap会发生什么 ?
- 3.0.1.5 HashMap和Hashtable的区别?HashMap在put、get元素的过程?体现了什么数据结构?
- 3.0.1.6 如何保证HashMap线程安全?底层怎么实现的?HashMap是有序的吗?如何实现有序?
- 3.0.1.7 HashMap存储两个对象的hashcode相同会发生什么?如果两个键的hashcode相同,你如何获取值对象?
- 3.0.1.8 HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
- 3.0.1.9 为什么HashMap中String、Integer这样的包装类适合作为K?如果要用对象最为key,该如何操作?
- 3.0.2.0 HashMap是如何扩容的?如何理解HashMap的大小超过了负载因子定义的容量?重新调整HashMap大小存在什么问题吗?
- 3.0.2.1 HashMap是线程安全的吗?多线程条件下put存储数据会发生什么情况?如何理解它并发性?
- 3.0.2.2 TreeMap集合结构有何特点?使用场景是什么?将"aababcabcdabcde"打印成a(5)b(4)c(3)d(2)e(1)?
- 3.0.2.3 说一下HashSet集合特点?如何存储null值的?HashSet是如何去重操作?手写产生10个1-20之间的随机数要求随机数不能重复案例?

Expand Down
38 changes: 33 additions & 5 deletions Read/ReadJavaWiki/04.数据结构/01.数据集合序言介绍.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
- 05.集合一些总结


### 00.一些常见问题思考
- Java集合框架中有哪些类?都有什么特点?集合框架用到Collection接口,这个接口有何特点?


### 01.学习集合序言
- 很多写程序的人都听说过一个公式,程序 = 算法 + 数据结构。
Expand Down Expand Up @@ -142,15 +145,40 @@



- **2. Set**
- TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。
- HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。
- LinkedHashSet:具有 HashSet 的查找效率,且内部使用双向链表维护元素的插入顺序。
- **3.Map**

#### 5.3 Map集合
- Map集合从何而来
* 我们通过什么东西来标识我们的学生在班级的唯一性. 我们都每一个学生应该存在一个学号 , 而这个学号是唯一的。那么我们就可以通过这个学号来表示我们学生在班级的唯一性。那么也就说,我们的学号和学生的姓名之间应该存在一个对应关系吧
* 那么我们怎么存储这样对应关系的数据呢?针对这个情况java就给我们提供了另外一种集合进行表示,而这个集合就是Map 。Map集合结构是由两列组成,第一列被称之为键 , 第二例被称之为值 ; 并且我们都知道键应该是唯一的,而对值没有要求。
```
学号 姓名
stu001 张三
stu002 李四
stu003 王五
stu004 王五
stu005 杨充逗比
```
- Collection集合和Map集合的区别?
* Map集合由两列组成(双列集合) , 而Collection集合由一列组成(单列集合) ; Map集合是夫妻对 , Collection孤狼
* Collection集合中的Set集合可以保证元素的唯一性 , 而Map集合中的键是唯一的
* Collection集合的数据结构是对存储的元素是有效的,而Map集合的数据结构只和键有关系,和值没有关系
- Map集合主要有哪些
- TreeMap:基于红黑树实现。
- HashMap:基于哈希表实现。
- HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。
- LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。
- Map集合的特点
* 将键映射到值的对象
* 一个映射不能包含重复的键
* 每个键最多只能映射到一个值



- **2. Set**
- TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。
- HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。
- LinkedHashSet:具有 HashSet 的查找效率,且内部使用双向链表维护元素的插入顺序。

- **4. Queue**
- LinkedList:可以用它来实现双向队列。
- PriorityQueue:基于堆结构实现,可以用它来实现优先队列。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,16 @@
- 08.Hash函数实现


### 好消息
- 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!
- **链接地址:https://github.com/yangchong211/YCBlogs**
- 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!


### 00.一些常见问题思考
- HashMap有哪些特点,简单说一下?HashMap内部的结构是怎样的?简单说一下什么是桶,作用是什么?
- HashMap和Hashtable的区别?HashMap在put、get元素的过程?体现了什么数据结构?
- 当有键值对插入时,HashMap会发生什么 ? 对于查找一个key时,HashMap会发生什么 ?
- 如何保证HashMap线程安全?底层怎么实现的?HashMap是有序的吗?如何实现有序?
- HashMap存储两个对象的hashcode相同会发生什么?如果两个键的hashcode相同,你如何获取值对象?
- 为什么HashMap中String、Integer这样的包装类适合作为K?如果要用对象最为key,该如何操作?
- HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
- HashMap是如何扩容的?如何理解HashMap的大小超过了负载因子定义的容量?重新调整HashMap大小存在什么问题吗?
- HashMap是线程安全的吗?多线程条件下put存储数据会发生什么情况?如何理解它并发性?


### 01.HashMap内部结构
Expand Down
Loading

0 comments on commit 2dd0ad3

Please sign in to comment.