【数学期末考试有点难,一考生写的一首诗:一夜复习两茫茫,看一句,忘三行。路遇友人,脸色皆苍凉。视死如归进考场,心里慌,手中忙。考完以后心凉凉,左右曰,今比亡。查成绩,众人皆过,我独亡。】
大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……
视频地址:http://edu.csdn.net/lecturer/994
Trove集合库如何使用在真实的项目中???
trove 英[trəʊv] 美[troʊv]
n. (物主不明的) 发掘出来的金银财宝;
Trove:一个快速、轻量级、针对java原子类型(byte,int,float,long等)的Collection 类的集合。废话不多说,网上资料很多~~~
net.sf.trove4j
trove4j
3.0.3
跟JDK的list一样,只是TIntArrayList这个篮子可以装int类型的数字,具体使用可以看下面的例子。
@Test
public void test(){
//申明int类型List
TIntList list = new TIntArrayList();
list.add(1);
list.add(3);
list.add(1);
list.add(4);
list.add(5);
list.add(2);
list.add(0);
//打印信息
for(int i = 0;i < list.size();i++){
System.out.print(list.get(i));//1314520
}
System.out.println("------------------------");
//对List进行转换
list.transformValues(new TIntFunction() {
@Override
public int execute(int i) {
//对所有数字统一乘于3
return i * 2;
}
});
//打印信息
for(int i = 0;i < list.size();i++){
System.out.print(list.get(i));//26281040
}
System.out.println("------------------------");
//默认排序,由小到大
list.sort();
//打印信息
for(int i = 0;i < list.size();i++){
System.out.print(list.get(i) + ",");//26281040
}
System.out.println("------------------------");
}
@Test
public void test(){
//key 和 value 都是 int基本类型
TIntIntMap intMap = new TIntIntHashMap();
intMap.put(1, 3);
intMap.put(1, 4);
intMap.put(5, 2);
intMap.put(0, 0);
for(int key:intMap.keys()){
System.out.println(key + " : " + intMap.get(key));
}
}
相比jdk原生的集合类有三个优势:
下面的代码引用高手的文章:
获取java程序运行时内存信息
传统的集合内存消耗情况:
@Test
public void test(){
Runtime run = Runtime.getRuntime();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + (run.totalMemory()-run.freeMemory()) );
run.gc();
System.out.println("开始时内存使用量 -> time: " + (new Date()));
long startMem = run.totalMemory() - run.freeMemory();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + startMem );
//key 和 value 都是 Integer
Map map = new HashedMap();
for(int i=0;i<50000;i++){
map.put(i, i);
}
System.out.println("结束时内存使用量 -> time: " + (new Date()));
long endMem = run.totalMemory()-run.freeMemory();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + endMem );
System.out.println("真实内存使用情况 -> memory difference:" + (endMem-startMem));
}
打印结果:
memory> total:126877696 free:110287808 used:16589888
开始时内存使用量 -> time: Mon Feb 06 15:07:46 SGT 2017
memory> total:126877696 free:123137696 used:3740000
结束时内存使用量 -> time: Mon Feb 06 15:07:46 SGT 2017
memory> total:126877696 free:117288400 used:9589296
真实内存使用情况 -> memory difference:5849296
Trove内存消耗情况:
@Test
public void test(){
Runtime run = Runtime.getRuntime();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + (run.totalMemory()-run.freeMemory()) );
run.gc();
System.out.println("开始时内存使用量 -> time: " + (new Date()));
long startMem = run.totalMemory() - run.freeMemory();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + startMem );
//key 和 value 都是 int基本类型
TIntIntMap intMap = new TIntIntHashMap();
for(int i=0;i<50000;i++){
intMap.put(i, i);
}
System.out.println("结束时内存使用量 -> time: " + (new Date()));
long endMem = run.totalMemory()-run.freeMemory();
System.out.println("memory> total:" + run.totalMemory() + " free:" + run.freeMemory() + " used:" + endMem );
System.out.println("真实内存使用情况 -> memory difference:" + (endMem-startMem));
}
打印结果:
memory> total:126877696 free:109727408 used:17150288
开始时内存使用量 -> time: Mon Feb 06 15:04:24 SGT 2017
memory> total:126877696 free:123137840 used:3739856
结束时内存使用量 -> time: Mon Feb 06 15:04:24 SGT 2017
memory> total:126877696 free:118912704 used:7964992
真实内存使用情况 -> memory difference:4225136
传统的集合占用内存是:
真实内存使用情况 -> memory difference:5849296
Trove集合占用内存是:
真实内存使用情况 -> memory difference:4225136
Trove集合确实挺好用,但是我们公司框架并未集成进来,只能看着眼馋,不知道公司的架构师有没有特别的用意。
对于项目性能有洁癖的猿儿们,可以利用Trove集合进行性能优化
来自大冰《乖,摸摸头》
【师父问:如果你要烧壶开水,生火到一半时发现柴不够,你该怎么办?有的弟子说赶快去找,有的说去借,有的说去买。师父说:为什么不把壶里的水倒掉一些呢?世事总不能万般如意,有舍才有得!】
【1】一个快速、轻量级 Collection 库 Trove
【2】开源的高性能Java集合:GNU Trove介绍
【3】Java 快速、轻量级 Collection 类的集合GNU Trove
【4】trove4j高性能Java集合库
【5】性能观察: Trove 集合类
【6】获取java程序运行时内存信息
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!