高效的Java集合框架GNU Trove的使用 以你之姓@ 2022-04-22 14:02 165阅读 0赞 本文作者:合肥工业大学 管理学院 钱洋 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,如下图所示: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70] # list与ArrayList集合 # Trove中包含的list集合有Byte集合、Char集合、Float集合、Int集合等,包含的array集合有ByteArrayList、TIntArrayList等。如下图所示: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 1] 以下以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("集合不为空!"); } //集合的遍历1 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //集合的遍历2 System.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集合的实例化,赋值,循环的两种方式,集合移除值、集合最大值最小值、集合排序、集合求和、集合反转、集合随机打乱、集合子集获取等。 以下为程序的输出结果: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 2] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 3] # 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])); } //循环遍历--方式2 TIntIterator 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"); } } } 程序输出结果为: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 4] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70]: /images/20220422/7e8b24ea3ddd4dc0b94877639990dd30.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 1]: /images/20220422/8f26ef7134624f3c851ab35e97b8d9ae.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 2]: /images/20220422/1372cb390bd945ef991fadce9b2a1bb3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 3]: /images/20220422/2d885ae3ac21485a9aa922774698c2a9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F5MjAxMTU1NDk_size_16_color_FFFFFF_t_70 4]: /images/20220422/fc3b6cd60fed4fa18cf15d13d1864ddd.png
相关 Java标准库深度使用:IO流操作,集合框架的高效应用 在Java标准库中,我们可以深入地利用各种功能强大的工具来处理IO流和集合框架。 1. **IO流操作**: - `InputStream`:如文件读取、网络响应等。 电玩女神/ 2024年09月20日 05:03/ 0 赞/ 4 阅读
相关 Java集合框架:如何高效地使用ArrayList `ArrayList`是Java集合框架中的一种动态数组,它的使用效率主要取决于以下几个方面: 1. **元素插入**: - 插入尾部:`list.add(elemen 浅浅的花香味﹌/ 2024年09月19日 14:15/ 0 赞/ 3 阅读
相关 使用Java的集合框架:集合类扩容问题分析 在Java的集合框架中,当一个集合(如ArrayList或LinkedList)的实际容量无法满足添加元素的需求时,它会进行扩容操作。 以下是几种常见的扩容情况及分析: 1 逃离我推掉我的手/ 2024年09月16日 21:36/ 0 赞/ 21 阅读
相关 如何高效使用Java集合框架? Java集合框架是Java语言提供的一种用于存储和操作数据的工具。以下是高效使用Java集合框架的一些策略: 1. 理解并选择正确的容器:如ArrayList(动态扩容)或L r囧r小猫/ 2024年09月14日 19:45/ 0 赞/ 15 阅读
相关 使用Java集合框架时的常见问题 在使用Java集合框架(如ArrayList, HashMap等)时,可能会遇到以下一些常见的问题: 1. 数据插入和删除:如果操作不当时,如遍历过程中修改或删除元素,会导致 淩亂°似流年/ 2024年09月13日 07:27/ 0 赞/ 17 阅读
相关 理解和使用Java的集合框架 Java的集合框架是Java编程语言中的一个重要部分,它提供了一种组织和操作数据的方式。以下是理解和使用Java集合框架的一些关键点: 1. **基础类型**:最简单的集合形 逃离我推掉我的手/ 2024年09月12日 00:18/ 0 赞/ 23 阅读
相关 Java集合框架Map的使用误区分析 Map是Java集合框架中的一种,它通过键(key)来存储和检索值(value)。在使用Map时,可能会存在一些误区,下面进行详细分析: 1. 错误理解Key的概念: 超、凢脫俗/ 2024年09月10日 07:00/ 0 赞/ 22 阅读
相关 高效的Java集合框架GNU Trove的使用 本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流。 未经本人允许禁止转载。 文章目录 简介 以你之姓@/ 2022年04月22日 14:02/ 0 赞/ 166 阅读
还没有评论,来说两句吧...