最有效的方法来增加在Map中的值

本文探讨了如何在Java的Map中高效地增加值,对比了不同方法的性能,包括优化后的查找一次的实现和基于数组的实现。测试结果显示,尽管优化后的Map方法理论上更快,但在实际运行中,基于数组的方法在大多数情况下表现出更高的效率。这可能是因为Map的哈希查找特性导致的。
摘要由CSDN通过智能技术生成

关于这个是在一个博客上看到的,就像试一下,测试结果出人意料。

看到这个标题可能还是觉得有点抽象,那么首先来一段代码:

int count = map.containsKey(string) ? map.get(string) : 0;
map.put(string, count + 1);

其中contains(),get() and put()方法都要在map中根据key查找,需要朝找三次,那么在优化过后只需要查找一次。

以上这段代码以及稍后的优化思路来自:http://blog.pengyifan.com/most-efficient-way-to-increment-a-map-value-in-java-only-search-the-key-once/

这是干什么用的,那么在直接看下面的一个应用就很清楚了,代码如下:

/** 
	    * 给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次  
	    * 优点:时间复杂度为O(n) 
	    * 缺点:暂时没发现 
	    */  
	   public static void method2(){  
	      
	    int[] datas = {5,2,3,2,4,5,1,2,1,5};  
	    Map<Integer,Integer> map = new HashMap<Integer, Integer>();  
	    for (int i 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你的YOLOv3训练MAP太小,可能是以下几个原因: 1. 数据集不足或训练集不够多。一个好的数据集应该包含足够的样本,以确保模型可以从学习到足够的信息。此外,训练集应该尽可能地涵盖不同的场景、光照和角度,以确保模型可以泛化到不同的情况下。 2. 学习率太大或太小。学习率的设置可能是训练MAP太小的一个原因。如果学习率太大,模型会跳过最优解;如果学习率太小,模型会花费过多时间在一个子优解上。 3. 模型结构不够好。YOLOv3的模型结构非常重要,如果模型结构不够好,模型将很难学习到有效的特征,从而导致MAP太小。 4. 数据预处理不够好。数据预处理是非常重要的,它可以帮助模型更好地学习到有效的特征。如果数据预处理不够好,模型将很难学习到有效的特征。 5. 训练时间不够长。训练时间可能是训练MAP太小的一个原因。如果训练时间不够长,模型将无法充分学习到有效的特征。 为了提高YOLOv3的训练MAP,你可以尝试以下方法: 1. 增加数据集或增加训练集的样本数量。 2. 调整学习率,使其不太大也不太小,可以通过尝试不同的学习率来找到一个合适的。 3. 对模型结构进行优化或使用预训练的模型。 4. 改进数据预处理的方法,例如增加数据的多样性或使用数据增强技术。 5. 增加训练时间,以充分学习到有效的特征。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值