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

网站备案负责人幕布照网站建设合同的验收表

网站备案负责人幕布照,网站建设合同的验收表,上海 企业网站建设,网页仿制在线在阅读博客文章5减少Java垃圾收集开销的技巧时 #xff0c;我想起了一个名为Trove的小型Java收集库#xff0c;该库“为Java提供了高速的常规和原始收集”。 我对应用Trove允许原始类型的集合而不是要求集合中的元素成为完整的引用对象的能力特别感兴趣。 我在这篇文章中会更… 在阅读博客文章5减少Java垃圾收集开销的技巧时 我想起了一个名为Trove的小型Java收集库该库“为Java提供了高速的常规和原始收集”。 我对应用Trove允许原始类型的集合而不是要求集合中的元素成为完整的引用对象的能力特别感兴趣。 我在这篇文章中会更详细地介绍Trove 。 JDK的标准集合尊重泛型并要求对象引用为其元素并且不允许在集合中存储基元。 甚至看起来似乎在标准JDK集合中放置基元的代码实际上也通过自动装箱将对象引用放置在集合中。 这种泛型方法的优点是能够使许多不同类型的对象使用相同的类和方法。 代价是即使可以存储更精简的基元也需要存储完整的参考对象。 Trove库具有LPGL许可证 并且相对较小不足10 MB如“下载”页面的下一个屏幕快照所示 小型下载文件不仅包含JAR格式的必需库。 它还包含文档和源。 库JAR本身本例中trove-3.1a1.jar 的大小约为2.5 MB。 Trove易于使用的原因之一是它在其自己的集合的API中很大程度上模仿了JDK集合的接口。 下一个代码清单演示了如何将值添加到List实现实质上是与使用JDK 7 List 在这种情况下为ArrayList还是Trove提供的TDoubleArrayList相同的API调用。 向JDK的ArrayList和Trove的TDoubleArrayList添加元素 /*** Demonstrate standard JDK {code ArrayListDouble}* with some JDK 8 functionality.*/ public void demonstrateJdkArrayListForDoubles() {final ArrayListDouble doubles new ArrayList();doubles.add(15.5);doubles.add(24.4);doubles.add(36.3);doubles.add(67.6);doubles.add(10.0);out.println(JDK ArrayListDouble:);out.println(\tDoubles List: doubles);out.println(\tMaximum double: doubles.stream().max(Double::compare));out.println(\tMinimum double: doubles.stream().min(Double::compare));out.println(\tSum of doubles: doubles.stream().mapToDouble(Double::doubleValue).sum()); }/*** Demonstrate use of TDoubleArrayList and show how* similar using it is to using {code ArrayListDouble}.*/ public void demonstrateTroveArrayListForDoubles() {// Demonstrate adding elements to TDoubleArrayList is// exactly like adding elements to ArrayListDouble.final TDoubleArrayList doubles new TDoubleArrayList();doubles.add(15.5);doubles.add(24.4);doubles.add(36.3);doubles.add(67.6);doubles.add(10.0);out.println(Trove TDoubleArrayList:); // TDoubleArrayList overrides toString()out.println(\tDoubles List: doubles);out.println(\tMaximum double: doubles.max());out.println(\tMinimum double: doubles.min());out.println(\tSum of doubles: doubles.sum()); } 上面的代码清单还演示了使用数组列表的Trove实现访问双精度集合的最大值最小值和总和是多么容易。 将这些集合写入特定原始数据类型在这种情况下为double的优点之一是可以在实现中提供专门应用于该数据类型的方法。 尽管对于String的集合或任意对象的集合返回最大值最小值和总和来说并没有TDoubleArrayList意义但是这些方法的含义对于专门用于双精度的集合例如TDoubleArrayList是显而易见的。 上面的清单确实指示了如何使用流使用JDK 8实现相同的功能。 当查看上面的代码时一个细微的差异可能并不明显由于自动装箱这是JDK实现ArrayList存储引用Double对象而Trove TDoubleArrayList实现存储原始double 。 Trove提供了各种数字类型的列表集合和映射的实现例如字节字符short整数longfloat和double。 Trove提供的有趣的数据结构/集合之一是TDoubleArrayStack 。 在刚刚演示过的TDoubleArrayList的支持下 TDoubleArrayStack并未在其API中公开用于添加元素的add方法。 相反它的方法反映了后进先出LIFO堆栈实现中可能期望的语义 pushdouble添加 pop访问和删除最近添加的条目以及peek查看最近添加的条目而不删除它。 下一个代码清单显示了此堆栈实现的应用程序。 还有其他数字数据类型的堆栈实现。 Trove的TDoubleArrayStack /*** Demonstrate Troves Double Array Stack.** Troves TDoubleArrayStack allows access to its* contents via push, pop, and peek.*/ public void demonstrateTroveDoubleArrayStack() {final TDoubleArrayStack stack new TDoubleArrayStack();stack.push(15.5);stack.push(17.3);stack.push(16.6);stack.push(2.2);out.println(Trove Array Stack of Doubles);out.println(\tPeek: stack.peek() ; After Size: stack.size());out.println(\tPop: stack.pop() ; After Size: stack.size());out.println(\tPeek: stack.peek() ; After Size: stack.size()); } 尽管未在此处显示但Trove在其gnu.trove.queue包中还支持Java原始类型的先进先出FIFO队列结构。 该软件包中的类提供了遵循队列语义的方法 offer poll和peek 。 使用JDK集合时 java.util.Collections类提供了许多有用的功能。 Trove提供了java.util.Collections功能的子集用于在其自己的名为gnu.trove.TCollections的类中使用基于Trove的集合。 具体来说在撰写本文时 TCollections类为同步和未修改的Trove集合提供支持。 下一个代码清单演示了如何使用TCollections 还演示了如何使用Trove集合该集合面向的数据类型不是double 在这种情况下为int 和其他数据结构类型链接列表。 展示了TCollections和TIntLinkedList /*** Demonstrate one of Troves equivalents of the* java.util.Collections class.*/ public void demonstrateTroveCollectionsClass() {final TIntLinkedList integers new TIntLinkedList();integers.add(5);integers.add(7);integers.add(3);integers.add(1);final TIntList unmodifiableIntegers TCollections.unmodifiableList(integers);try{unmodifiableIntegers.add(15);}catch (Exception ex){out.println(\tException caught: ex);} } 当希望对基于Trove的集合进行迭代时可以通过传统的迭代器对其进行访问如下面的代码清单所示。 尽管在此示例中集合和关联的迭代器在long值上起作用但是Trove为Java的其他原始数据类型提供了类似的集合和迭代器。 使用Trove迭代器迭代Trove集合 /*** Demonstrate traditional iteration of a* Trove collection.*/ public void demonstrateIterationWithIterator() {final TLongHashSet longs new TLongHashSet();longs.add(15);longs.add(6);longs.add(12);longs.add(13);longs.add(2);TLongIterator longIterator longs.iterator();while (longIterator.hasNext()){final long longValue longIterator.next();out.println(longValue);} } 迭代Trove集合的另一种方法是使用Procedure 。 下面的两个代码清单对此进行了演示。 第一个清单演示了一个自定义的面向long过程的过程第二个清单演示了将该自定义过程通过其forEach方法应用于TLongLinkedList上的迭代。 使用Trove过程迭代Trove集合 /*** Demonstrate iteration of a Trove collection* using a Procedure.*/ public void demonstrateIterationWithProcedure() {final TLongLinkedList longs new TLongLinkedList();longs.add(15);longs.add(6);longs.add(12);longs.add(13);longs.add(2);longs.forEach(new StandardOutputLongProcedure()); }先前迭代示例中使用的过程实现 package dustin.examples.trove;import static java.lang.System.out;import gnu.trove.procedure.TLongProcedure;/*** Simple implementation of TLongProcedure that* iterates over Trove collection of {code long}* values and writes those values to standard* output with one value per line.*/ public class StandardOutputLongProcedure implements TLongProcedure {Overridepublic boolean execute(long longValue){out.println(longValue);return true;} } 值得注意的是Trove集合倾向于提供forEachDescending方法以及以相反顺序提供迭代。 与GNU Trove相关的其他观察 GNU Trove是一个提供“ Java的高速常规和原始集合”的库不应与Trove混淆后者是“ OpenStack的数据库即服务 ”。 Trove集合和数据结构的名称都以“ T”开头对于Trove。 实际上除了HashingStrategy IdentityHashingStrategy和Version之外Trove中的所有类和接口都以“ T” 开头 。 Trove集合通常提供接受其基础数据类型的数组的构造函数并提供toArray()方法以原始数组的形式提供其数据元素。 Trove集合通常提供显式覆盖的toString()实现这些实现允许像JDK集合一样轻松编写各个数据元素并且与Java数组需要Arrays.toString方法不同。 有关Trove的其他详细信息请参见概述 常见问题解答和消息论坛 。 其他资源包括使用此Treasure Trove增强集合性能 Java HashMap性能 Java中的高性能库以及TROVE – Java高性能集合 。 Trove的Java软件包通常按数据结构类型进行组织对于同一数据包中给定的数据结构类型所有特定于原始类型的实现都可以进行组织。 例如软件包的名称类似gnu.trove.list gnu.trove.set等。 因为每个Trove集合都特定于特定的原始数据类型所以每个集合都不需要通用参数并且没有与通用相关的问题例如擦除。 此方法还允许每个集合支持特定于该集合中存储的数据类型的方法。 例如数字类型的集合可以提供sum方法而特定于字符类型的集合可以提供grep方法。 结论 在许多常见用途中JDK提供的集合将表现良好并且存储对象引用可能不是问题。 但是在某些情况下使用Trove集合特别是存储基元而不是对象引用的能力可能会提供必要的优势。 随着集合变大在集合中存储基元而不是它们的等效对象引用的优势变得更加明显。 翻译自: https://www.javacodegeeks.com/2016/01/discovering-trove-java-primitives-collection-handling.html
http://www.sadfv.cn/news/101500/

相关文章:

  • 深圳网站seo建设贵州二建报名入口官网
  • 网页跳转到别的网站甜品店网页模板html
  • 永州网站建设哪家好网站程序文件
  • 东莞手机网站制作网页效果制作
  • 深圳网站建设 联雅自助建站优化
  • 驻马店网站建设天祥个人简历生成器
  • 网站建站推广是啥意思社交网站 设计
  • 智慧团建登陆网站wordpress 首页图片
  • 工信部的网站备案信息查询成立公司需要几个股东
  • 多语种网站建设开发网站短信接口怎么做
  • 出名的设计网站建一个漫画网站
  • 同心县建设局网站网站建设账务处理
  • 中国最大的建材网站企业网站设计有哪些新功能
  • dede织梦建站教程网站设计建设定制
  • 如何查看网站的点击量高水平建设专业网站
  • 厦门市建设局综合业务平台网站菏泽厚德网站建设公司怎么样
  • 大型网站 开发语言主题网站开发介绍
  • 百度系优化一个seo良好的网站其主要流量往往来自
  • 为什么有网网站打不开怎么回事啊宁波网站建设设计公司信息
  • 学校网站建设项目需求报告南阳建网站企业有哪些
  • 桂林网站建设找骏程有专门做试吃的网站吗
  • 网站赚取广告费网站的栏目
  • 12306 网站开发中卫市平面设计培训学校
  • 有什么免费做代理的网站网站开发+职位描述
  • 网站中英切换实例wordpress标题相关
  • 祥网站建设网站设计科技有限公司
  • 贵阳网站商城建设wordpress 轻量级
  • 企业公司网站 北京如何把网站让百度录用
  • 西樵营销网站制作射阳建设网站
  • 团购网站切换城市js特效代码广东省公路建设公司网站