0%

java随笔

在学习的过程中,难免会碰到自己从未接触过的知识和技巧,有时候一边看过去会忘记,所以把它记录下来是最好的选择,而不是假装自己会了,又继续学习别的知识,这样的话,对后续的工作和学习都会带来一些不必要的麻烦。

我自认为,在学习的时候,应该自己主动思考,如果这样的话,结果是怎么样,那样的话,结果是怎么样,我们在整个小学、初中、高中,甚至是大学,都被灌输了一种思想,就是,这样就是对的,那么当我们碰到问题的时候,往往就会一头雾水,不知如何下手,如果有主动思考的能力的话,这种问题是不是就会没有那么棘手呢?

2020.9.10

在阅读《疯狂java讲义》一书中HashMap的介绍,书中实例HashMap类实例的put方法,发现他有一个返回值,并且是Object类型的,这我就纳闷了,添加元素,一般不是返回true就是false啊?我在一篇博客的评论下发现了答案,原来是

如果此前存在一个相同的key,那么put方法返回的是前面key的value值,这时候后来put的value就会覆盖前面put进去的值;如果当前put方法,put的是一个新的key,那么返回值就是null。

2020.9.14

关于将线程不安全的HashSet、HashMap、ArrayList类转化成线程安全的类的介绍中

使用Collections.synchronizeXXX

1
2
3
4
5
6
List<Person> allList = Collections.synchronizedList(new ArrayList());
Iterator<Integer> iterator = allList .iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
System.out.println(integer);
}

如上所示:因为迭代器不是线程安全的,所以还需要同步allList,使获得迭代器的过程也是同步的,这样在操作同步后的集合在遍历的时候就被锁住,不能在进行别的操作。

1
2
3
4
5
6
7
8
List<Person> allList = Collections.synchronizedList(new ArrayList());
synchronized(allList ){
Iterator<Integer> iterator = allList .iterator();
while (iterator.hasNext()) {
Integer integer = (Integer) iterator.next();
System.out.println(integer);
}
}