当前位置: 首页 > news >正文

cms做网站后台网站制作东莞

cms做网站后台,网站制作东莞,百度关键词推广公司,郑州网站制作十年乐云seo结构为键值的map这个问题可能被认为太基础了#xff0c;但是在论坛中经常被问到。 在本文中#xff0c;我将讨论一种仅在Map ONCE中搜索键的方法。 让我们首先来看一个例子。 假设我正在使用Map创建一个字符串频率列表#xff0c;其中每个键是一个正在计数的String #x… 结构为键值的map 这个问题可能被认为太基础了但是在论坛中经常被问到。 在本文中我将讨论一种仅在Map ONCE中搜索键的方法。 让我们首先来看一个例子。 假设我正在使用Map创建一个字符串频率列表其中每个键是一个正在计数的String 值是一个Integer 每次添加一个String都会递增。 实现它的一种直接方法是 int count map.containsKey(string) ? map.get(string) : 0; map.put(string, count 1); 这段代码运行很慢因为它在地图上包含三个潜在的昂贵操作即containsKey get和[put]http://docs.oracle.com/javase/7/docs/ api / java / util / Map.htmlputKV 。 每个都需要在地图中搜索关键字。 现在让我们重构代码以获得更好的性能。 整数与MutableInteger与AtomicInteger 我们必须调用三个昂贵的操作的重要原因之一是使用Integer进行计数。 在Java中 Integer是不可变的 。 这样可以防止我们在构造后修改整数值。 因此要增加一个计数器我们必须首先从映射中获取整数然后通过添加一个整数来创建另一个新整数然后将其放回映射中。 为了使计数器可变有几种方法。 一种是简单地创建自己的MutableInteger 就像我在下面显示的那样。 public class MutableInteger {private int val;public MutableInteger(int val) {this.val val;}public int get() {return val;}public void set(int val) {this.val val;} } 另一种方法可能是在Java中使用AtomicInteger 该方法用于原子增量计数器等应用程序中。 但是AtomicInteger的主要选择是如果您希望通过对整数进行操作来实现线程安全。 因此它不能用作Integer的替代。 基于此如果线程安全不是您项目的重要考虑因素则我不建议您使用AtomicInteger 。 仅搜索一次密钥 使用MutableInteger之后 我们可以将上面的代码更改为 if (map.containsKey(string)) {MutableInteger count map.get(string);count.set(count.get() 1); } else {map.put(string, new MutableInteger(1)); } 要么 MutableInteger count map.get(string); if (count ! null) {count.set(count.get() 1); } else {map.put(string, new MutableInteger(1)); } 在最坏的情况下如果之前没有看到密钥则代码将搜索密钥两次一次用于检索一次用于设置。 它比上一个要好得多。 但是我们不应该立即满足并停止。 如果您在Java文档中选中了[Map.put]http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#putKV方法您会发现此方法将返回the previous value associated with key 。 这意味着我们可以将检索和设置合并为一个。 但是您可能想知道如果不首先检索计数器如何设置新计数器 现在我们终于可以触摸本文中最棘手的部分我们可以简化一下零频率计数器的放置 public int incrementCount(K key, int count) {MutableInteger tmpCount new MutableInteger(0);MutableInteger oldCount map.put(key, tmpCount);if (oldCount ! null) {count oldCount.get();}tmpCount.set(count);return count;}另一个柜台 看起来将所有必要的操作放入一个类中将对将来的使用有所帮助。 因此我创建了一个名为Counter的类并将其公开。 计数器定义一个集合该集合对对象出现在集合中的次数进行计数。 假设您有一个包含{a, a, b, c}的Counter。 在“ a”上调用getCount将返回2而在keySet上调用将返回{a, b, c} 。 此类的工作方式类似于Map 但具有不同的方法可以轻松获取/设置/增加对象的计数并使用该计数计算各种函数。 Counter构造函数和addAll方法可用于复制另一个Counter的内容。 根据IntCounter和AbstractMapBag修改Counter类。 Counter上的一些突出操作包括 crementCount和decrementCount 将给定键的给定计数与当前计数相加/相减。 如果该键以前未出现过则假定其计数为0因此增量方法会将其计数设置为给定的数量。 减量会将其计数设置为-1。 getCount 返回给定键的当前计数如果以前没有看到过则返回0。 keysAt keysAbove和keysBelow 返回其计数在给定阈值之上之下或之下的一组键。 该集合可能包含0个元素但不会为null。 argmin 和argmax 找到并返回此Counter中具有最小/最大计数的密钥。 如果有几个最小/最大计数则返回随机值。 如果此Counter为空则返回null。 参考 用Java递增Map值的最有效方法–只需从PGuru博客的JCG合作伙伴 Peng Yifan那里 搜索一次密钥 。 翻译自: https://www.javacodegeeks.com/2013/10/most-efficient-way-to-increment-a-map-value-in-java-only-search-the-key-once.html结构为键值的map
http://www.yutouwan.com/news/28226/

相关文章:

  • 网站开发ssh西安软件外包公司排名
  • 网站可以做多少个关键词服务网站 建设原则
  • 湖南服装网站建设头像制作免费软件
  • 都有哪些电商平台汕头seo计费管理
  • 网站开发者的设计构想网页制作有什么软件
  • 网站栏目划分怎么做建设邮费自己的网站_要不要购买服务器的
  • 专业网站制作企业购物网站有哪些
  • 网站备案全国合作拍照点荣昌集团网站建设
  • 网上投资网站建设北京app开发定制公司
  • 深圳网站建设三把火科技网站制作的发展趋势
  • 网站营销推广方案慈溪网页设计
  • 公司网站建设的环境分析建筑人才网官网首页
  • 网站运营公司西安网站建设公
  • 用自己网站做邮箱域名解析财务系统
  • 电子商务网站 备案外链 网站权重
  • 常见的网站结构有哪些微信公众平台设计
  • 做问卷的网站好asp.net网站开发实例教程 下载
  • 某企业集团网站建设方案论文制作公司网站视频
  • 电子商务的网站案例页面设计师招聘
  • 做网站湖州网站开发小图标怎么设置
  • 机械厂做网站全媒体门户网站建设
  • 附近网站建设服务公司c 网站开发 pdf
  • 做网站用啥软件好信云科技的vps怎么做网站
  • 戚墅堰做网站咸宁网站seo排名
  • 电子商务网站建设与管理课程的目的九江网站建设哪家好
  • 厦门易尔通做网站怎么样重庆建工集团
  • 网站建设方案书 个人备案西安网站开发制作
  • 办公司流程和费用长春网站快照优化公司
  • 网页设计与制作实训报告2000字鄂州seo多少钱
  • 三明城乡建设网站最好看的直播免费的