打字猴:1.700445091e+09
1700445091 }
1700445092
1700445093 这才是我们想要的结果,就这一句话,即可打乱一个列表的顺序,不用我们费尽心思的遍历、替换元素了。我们一般很少用到shuffle这个方法,那它可以用在什么地方呢?
1700445094
1700445095 可以用在程序的“伪装”上。
1700445096
1700445097 比如我们例子中的标签云,或者是游戏中的打怪、修行、群殴时宝物的分配策略。
1700445098
1700445099 可以用在抽奖程序中。
1700445100
1700445101 比如年会的抽奖程序,先使用shuffle把员工排序打乱,每个员工的中奖几率就是相等的了,然后就可以抽取第一名、第二名。
1700445102
1700445103 可以用在安全传输方面。
1700445104
1700445105 比如发送端发送一组数据,先随机打乱顺序,然后加密发送,接收端解密,然后自行排序,即可实现即使是相同的数据源,也会产生不同密文的效果,加强了数据的安全性。
1700445106
1700445107
1700445108
1700445109
1700445110 编写高质量代码:改善Java程序的151个建议 [:1700438149]
1700445111 编写高质量代码:改善Java程序的151个建议 建议78:减少HashMap中元素的数量
1700445112
1700445113 在系统开发中,我们经常会使用HashMap作为数据集容器,或者是用缓冲池来处理,一般很稳定,但偶尔也会出现内存溢出的问题(如OutOfMemory错误),而且这经常是与HashMap有关的,比如我们使用缓冲池操作数据时,大批量的增删查改操作就可能会让内存溢出,下面建立一段模拟程序,重现该问题,代码如下:
1700445114
1700445115 public static void main(String[]args){
1700445116
1700445117 Map<String, String>map=new HashMap<String, String>();
1700445118
1700445119 final Runtime rt=Runtime.getRuntime();
1700445120
1700445121 //JVM终止前记录内存信息
1700445122
1700445123 rt.addShutdownHook(new Thread(){
1700445124
1700445125 @Override
1700445126
1700445127 public void run(){
1700445128
1700445129 StringBuffer sb=new StringBuffer();
1700445130
1700445131 long heapMaxSize=rt.maxMemory()>>20;
1700445132
1700445133 sb.append(“最大可用内存:”+heapMaxSize+“M\n”);
1700445134
1700445135 long total=rt.totalMemory()>>20;
1700445136
1700445137 sb.append(“对内存大小:”+total+“M\n”);
1700445138
1700445139 long free=rt.freeMemory()>>20;
1700445140
[ 上一页 ]  [ :1.700445091e+09 ]  [ 下一页 ]