本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流。
未经本人允许禁止转载

文章目录

  • 简介
  • jar下载
  • list与ArrayList集合
  • Map与HashMap

简介

Trove 是一个快速、轻量级 Collection 类的集合。Trove 提供所有标准 java.util Collections 类的更快的版本以及能够直接在原语(primitive)(例如包含 int 键或值的 Map 等)上操作的 Collections 类的版本。

jar下载

构建maven工程,在pom.xml文件中,作如下配置下载jar文件:

<!-- https://mvnrepository.com/artifact/net.sf.trove4j/trove4j --><dependency><groupId>net.sf.trove4j</groupId><artifactId>trove4j</artifactId><version>3.0.3</version></dependency>

下载完毕后,我们可以看到trove4j包含的package,如下图所示:

list与ArrayList集合

Trove中包含的list集合有Byte集合、Char集合、Float集合、Int集合等,包含的array集合有ByteArrayList、TIntArrayList等。如下图所示:

以下以TIntArrayList演示集合的操作。
TIntArrayList提供了处理int型集合的一系列方法。操作程序如下;

package com.qian.collection;import java.util.Random;
import gnu.trove.iterator.TIntIterator;
import gnu.trove.list.TIntList;
import gnu.trove.list.array.TIntArrayList;public class TestCollection {public static void main(String[] args) {TIntArrayList list = new TIntArrayList();//只能添加int类型list.add(1);//可以添加int数组int arr[] = {4,2,3};list.add(arr);//从数组的某一位置添加,从第二个位置添加,添加两个数字list.add(arr,1,2);//判断集合是否为空if (!list.isEmpty()) {System.out.println("集合不为空!");}//集合的遍历1for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//集合的遍历2System.out.println("第二种方式遍历结果为:");TIntIterator iter = list.iterator();while(iter.hasNext()){System.out.println(iter.next());}//数组移除值list.removeAt(4); //下表从0开始list.remove(1); //下标从1开始System.out.println("移除后的结果为:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//获取最大值与最小值System.out.println("数组中最大值为:" + list.max());System.out.println("数组中最小值为:" + list.min());//集合排序,采用升序排序list.sort();System.out.println("排序后的结果为:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//转化成字符串String listToString = list.toString();System.out.println(listToString);//判断是否包含某值if (list.contains(3)) {System.out.println("集合包含3元素!!");}//集合求和int sumAll = list.sum();System.out.println("数组所有元素的和为:" + sumAll);//集合的子集合TIntList sublist = list.subList(1, 4);for (int i = 0; i < sublist.size(); i++) {System.out.println(sublist.get(i));}//集合反转list.reverse();System.out.println("集合反转后结果为:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//集合在某位置插入值list.insert(0, 5);System.out.println("插入值的结果为:");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//集合随机打乱list.shuffle(new Random());System.out.println("集合打乱操作");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//集合清空list.clear();}
}

上述操作的内容包括,TIntArrayList集合的实例化,赋值,循环的两种方式,集合移除值、集合最大值最小值、集合排序、集合求和、集合反转、集合随机打乱、集合子集获取等。
以下为程序的输出结果:

Map与HashMap

以下以TIntIntHashMap演示操作,程序如下:

package com.qian.collection;import gnu.trove.iterator.TIntIterator;
import gnu.trove.map.hash.TIntIntHashMap;public class TestMap {public static void main(String[] args) {//实例化TIntIntHashMap map = new TIntIntHashMap();//存放值map.put(1, 1);map.put(2, 3);map.put(3, 5);//判断是否为空if (!map.isEmpty()) {System.out.println("map集合不为空");}//循环遍历--方式1 int[] keys = map.keys();for (int i = 0; i < keys.length; i++) {System.out.println("key:" + keys[i] + "\tvalue:" + map.get(keys[i]));}//循环遍历--方式2TIntIterator iter =  map.keySet().iterator();System.out.println("第二种方式遍历的结果为:");while (iter.hasNext()) {int key = iter.next();System.out.println("key:" + key + "\tvalue:" + map.get(key));}//指定key位置key加上某数map.adjustValue(2, 1);System.out.println("key为2的value加上1结果为:");for (int i = 0; i < keys.length; i++) {System.out.println("key:" + keys[i] + "\tvalue:" + map.get(keys[i]));}//指定key位置加上某数返回该数int adjust = map.adjustOrPutValue(1, 5, 1);System.out.println("加上5为:" + adjust);System.out.println("加上某值的结果为:");for (int i = 0; i < keys.length; i++) {System.out.println("key:" + keys[i] + "\tvalue:" + map.get(keys[i]));}//是否包含某个key值if (map.containsKey(1)) {System.out.println("包含key---1");}//value是否包含某值if (map.containsValue(4)) {System.out.println("包含value---4");}}
}

程序输出结果为:

高效的Java集合框架GNU Trove的使用相关推荐

  1. 开源的高性能Java集合:GNU Trove介绍

    看过openNLP源码的人或许会注意到代码里经常引入import gnu.trove.*; 好奇之余,进行了资料搜集和总结. Trove 是一个快速.轻量级 Collection 类的集合.Trove ...

  2. java集合框架史上最详解(list set 以及map)

    title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...

  3. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  4. Java集合框架系列教程三:Collection接口

    翻译自:The Collection Interface 一个集合表示一组对象.Collection接口被用来传递对象的集合,具有最强的通用性.例如,默认所有的集合实现都有一个构造器带有一个Colle ...

  5. 容器(一)剖析面试最常见问题之 Java 集合框架

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...

  6. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

  7. Java集合框架之fastutil

    fastutil扩展了 Java集合框架,通过提供特定类型的map.set.list和queue,以及小内存占用.快速访问和插入:也提供大(64位)array.set 和 list,以及快速.实用的 ...

  8. 快速了解Java集合框架

    1. 简介 JDK1.2 引入了 Java 集合框架,包含一组数据结构.与数组不同,这些数据结构的存储空间会随着元素添加动态增加.其中,一些支持添加重复元素另一些不支持,一些支持 null,一些能自动 ...

  9. java集合框架类_Java集合框架总结—超详细-适合面试

    Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List. Map实现类用于保存具有映射关系的数据(key-value). 2.Set.Lis ...

最新文章

  1. android Button背景高度被拉伸问题--解决方案
  2. 小程序二次贝塞尔曲线,购物车商品曲线飞入效果
  3. 【线性规划和网络流24题】
  4. 深度学习:神经网络基础知识总结
  5. 通往奥格瑞玛的道路(洛谷 1462)
  6. 进程调度实验_进程运行及其调度
  7. h5移动端如何让页面强制横屏
  8. android wms,Android解析WindowManagerService(一)WMS的诞生
  9. 「贪心算法」虚拟汽车加油问题
  10. 获取mssqlserver数据库表的字段名称,字段说明,数据类型,主键等表的信息
  11. 简单的实现HTTP密码验证登陆
  12. C#WinForm开发笔记——基本控件(一)
  13. 洛谷 — 旅行商的背包(背包)
  14. 易到完成股权变更 乐视仍未完全退出中信系入局
  15. 自动化测试全流程总结
  16. Android高手笔记 - 网络优化
  17. VCSA Exception in invoking authentication handler User password expired
  18. 【Linux】定时任务 | crontab定时任务
  19. 在linux服务器下配置代理服务器( 使用liunx服务器的ip用来代理 )
  20. Oracle时间函数 to_char()及常用时间格式

热门文章

  1. Deno + Oak 构建酷炫的 Todo API
  2. linux的oracle修改实例名SID
  3. 关于git pull机制和游戏开发热更新思考
  4. linux find命令mtime/atime/ctime +n -n n 全网最正确的总结
  5. 一个列表包揽所有你需要的Windows应用
  6. 【HTML】使用css3和html给网站添加上春节灯笼特效
  7. 通用职责分配软件原则之9-受保护变量原则
  8. compat包_使用Compat Patchers,API的稳定性既便宜又容易!
  9. ios apple语音性别_如何使用Apple的CoreML和Vision API构建图像识别iOS应用
  10. 苹果x和xsmax有什么区别_苹果手机不卡的真相是什么,安卓和iOS有本质区别