高效的Java集合框架GNU Trove的使用

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

文章目录

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

简介

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

jar下载

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


		<dependency>
			<groupId>net.sf.trove4jgroupId>
			<artifactId>trove4jartifactId>
			<version>3.0.3version>
		dependency>

下载完毕后,我们可以看到trove4j包含的package,如下图所示:
高效的Java集合框架GNU Trove的使用_第1张图片

list与ArrayList集合

Trove中包含的list集合有Byte集合、Char集合、Float集合、Int集合等,包含的array集合有ByteArrayList、TIntArrayList等。如下图所示:
高效的Java集合框架GNU Trove的使用_第2张图片
以下以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集合的实例化,赋值,循环的两种方式,集合移除值、集合最大值最小值、集合排序、集合求和、集合反转、集合随机打乱、集合子集获取等。
以下为程序的输出结果:
高效的Java集合框架GNU Trove的使用_第3张图片
高效的Java集合框架GNU Trove的使用_第4张图片

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");
		}
	}
}

程序输出结果为:

高效的Java集合框架GNU Trove的使用_第5张图片

你可能感兴趣的:(java)