
辨析
Zhujinsi_3
positive!
展开
-
阿里java规范“不要在 foreach 循环里进行元素的 remove/add 操作,remove 元素请使用 Iterator 方式”
先来看一段代码,摘自阿里巴巴java开发规范:List<String> list = new ArrayList<>();list.add("1");list.add("2");for (String item: list) { if ("1".equals(item)) { list.remove(item); }}可以发现是可以执行的,但事实上循环只执行了一次便停止了(原因在下文讲述),但如果要删除"2",便会报如下错误:这个错误是指存在并发修改,通常在原创 2020-07-03 20:49:05 · 2031 阅读 · 0 评论 -
字符串三个类之间的区别
Java中的String、StringBuffer、StringBuilder三者的区别:这三个类之间的区别主要是在两个方面:运行速度和线程安全。1.首先说运行速度,或者说是执行速度,在这方面***运行速度快慢为:StringBuilder > StringBuffer > String***String最慢的原因:String为字符串常量,而StringBuilder和Stri...原创 2019-07-08 21:47:08 · 381 阅读 · 0 评论 -
HashMap与HashTable(ConcurrentHashMap)的区别
HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java5提供了ConcurrentHashMap,它是Hashtable的替代,比Hashtable的扩展性更好。由于Hashtable是线程安全的也是sync...原创 2019-07-08 21:58:53 · 105 阅读 · 0 评论 -
快速排序最好、最坏、平均时间复杂度分析
我们来分析一下快速排序法的性能。快速排序的时间性能取决于快速排序递归的深度,可以用递归树来描述递归算法的执行情况。如图所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序过程中的递归过程。由于我们的第一个关键字是50,正好是待排序的序列的中间值,因此递归树是平衡的,此时性能也比较好。在最优情况下,Partition每次都划分得很均匀,如果排序n个关键字,其递归树的深度就...原创 2019-07-25 21:13:28 · 38435 阅读 · 1 评论