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
1700453050
intList.transformValues(new TIntFunction(){
1700453051
1700453052
public int execute(int element){
1700453053
1700453054
return element*2;
1700453055
1700453056
}
1700453057
1700453058
});
1700453059
1700453060
//过滤,把大于200的元素组成一个新的列表
1700453061
1700453062
TIntList t2=intList.grep(new TIntProcedure(){
1700453063
1700453064
public boolean execute(int_element){
1700453065
1700453066
return_element>200;
1700453067
1700453068
}
1700453069
1700453070
});
1700453071
1700453072
//包装为JDK的List
1700453073
1700453074
List<Integer>list=new TIntListDecorator(intList);
1700453075
1700453076
//键类型确定Map
1700453077
1700453078
TIntObjectMap<String>map=new TIntObjectHashMap<String>();
1700453079
1700453080
Trove的最大优势是在高性能上,在进行一般的增加、修改、删除操作时,Trove的响应时间比JDK的集合少一个数量级,比fastutil也会高很多,因此在高性能项目中要考虑使用Trove。
1700453081
1700453082
(3)lambdaj
1700453083
1700453084
lambdaj是一个纯净的集合操作工具,它不会提供任何的集合扩展,只会提供对集合的操作,比如查询、过滤、统一初始化等,特别是它的查询操作,非常类似于DBRMS上的SQL语句,而且也会提供诸如求和、求平均值等的方法,示例代码如下:
[
上一页 ]
[ :1.700453035e+09 ]
[
下一页 ]