我在之前两讲介绍了Java集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如Vector、Stack,在性能方面也远不尽如人意。幸好Java语言提供了并发包(java.util.concurrent),为高度并发需求提供了更加全面的工具支持。 今天我要问你的 ...
在 C# 里,我们常用的集合主要分两类:泛型集合和 非泛型集合。 那问题来了:为啥推荐用非泛型集合?这两者有啥区别?什么时候该用哪个?会不会影响性能?代码写起来麻不麻烦? 别急,咱们一步步讲清楚,让你以后选集合不再纠结。 一、先搞明白:什么 ...
2.为什么HashMap在多线程并发存在死循环的问题,JDK1.8中做了哪些优化? 详情参考 《我们一起进大厂》系列-HashMap老生常谈,HashMap的死循环HashMap为何从头插入改为尾插入 HashMap可以使用null作为key,不过建议还是尽量避免这样使用。HashMap以null作为key时,总是存储 ...
这个列表总结了10个Java开发人员最常犯的错误。 Arrays.asList()会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类。java.util.Arrays.ArrayList类实现了set(), get(),contains()方法,但是并没有实现增加元素的方法(事实上是 ...
前几天在写《HashMap 和 Hashtable 的 6 个区别》这篇文章的时候,差点把 Hashtable 写成了 HashTable,后来看源码证实了是:Hashtable,小写的 table,不符合驼峰命名规则。 简单来说就是,标识符的每个单词首字母必须大写,看起来像是驼峰的形状。 当时就很好奇 ...
不是吧,散列的机制难道还要对value进行排序吗?好像是直接由散列函数将key映射到value上的吧。 如果说排序的话,我觉得不太现实的,对key排序可能它的效果不如原来的。