打字猴:1.700453e+09
1700453000 //Joda的DateTime转为JDK的Date
1700453001
1700453002 Date jdkDate=dt.toDate();
1700453003
1700453004 //JDK的Date转为Joda的DateTime
1700453005
1700453006 dt=new DateTime(jdkDate);
1700453007
1700453008 经过这样的转换,Joda可以很好地与现有的日期类保持兼容,在需要复杂的日期计算时使用Joda,在需要与其他系统通信或写到持久层中时则使用JDK的Date。Joda是一种令人惊奇的高效工具,无论是计算日期、打印日期,或是解析日期,Joda都是首选,当然日期工具类也可以选择date4j,它也是一个不错的开源工具,这里就不再赘述了。
1700453009
1700453010
1700453011
1700453012
1700453013 编写高质量代码:改善Java程序的151个建议 [:1700438220]
1700453014 编写高质量代码:改善Java程序的151个建议 建议143:可以选择多种Collections扩展
1700453015
1700453016 为什么这么多的开源框架热衷于Collections的扩展呢?是因为我们程序(经典的定义:程序=算法+数据结构,想想看数据结构是为谁而服务的)主要处理的是一大批数据,而能容纳大量数据的也就是Collections类和数组了,但是数据的格式具有多样性,比如数据映射关系多样,数据类型多样等,下面我们再介绍三个比较有个性的Collections扩展工具包。
1700453017
1700453018 (1)fastutil
1700453019
1700453020 fastutil(按照Java的拼写规则应该为FastUtil,但是官网就是这样命名的,我们尊重官方)是一个更新比较频繁的工具包,它的最新版本是6.3,主要提供了两种功能:一种是限定键值类型(Type Specific)的Map、List、Set等,另一种是大容量的集合。我们先来看示例代码:
1700453021
1700453022 //明确键类型的Map
1700453023
1700453024 Int2ObjectMap<String>map=new Int2ObjectOpenHashMap<String>();
1700453025
1700453026 map.put(100,“A”);
1700453027
1700453028 //超大容量的List,注意调整JVM的Heap内存
1700453029
1700453030 BigList<String>bigList=new ObjectBigArrayBigList<String>(
1700453031
1700453032 1L+Integer.MAX_VALUE);
1700453033
1700453034 //基本类型的集合,不再使用Integer包装类型
1700453035
1700453036 IntArrayList arrayList=new IntArrayList();
1700453037
1700453038 这里要特别注意的是大容量集合,什么叫大容量集合呢?我们知道一个Collection的最大容量是Integer的最大值(2 147 483 647),不能超过这个容量,一旦我们需要把一组超大的数据放到集合中,就必须要考虑对此进行拆分了,这会导致程序的复杂性提高,而fastutil则提供了Big系列的集合,它的最大容量是Long的最大值,这已经是一个非常庞大的数字了,超过这个容量基本上是不可能的。但在使用它的时候需要考虑内存溢出的问题,注意调节Java的mx参数配置。
1700453039
1700453040 (2)Trove
1700453041
1700453042 Trove提供了一个快速、高效、低内存消耗的Collection集合,并且还提供了过滤和拦截的功能,同时还提供了基本类型的集合,示例代码如下:
1700453043
1700453044 //基本类型的集合,不使用包装类型
1700453045
1700453046 TIntList intList=new TIntArrayList();
1700453047
1700453048 //每个元素值乘以2
1700453049
[ 上一页 ]  [ :1.700453e+09 ]  [ 下一页 ]