【Java方法】统计数组内不同元素个数及每个元素的数量

【Java方法】统计数组内元素的种类数及每种元素的数量


我们假定一个一维数组 a = { 1 , 2 , 3 , 2 , 2 , 3 , 1 , 3 , 2 , 1 , 2 , 3 , 1 , 2 , 1 , 2 , 3 , 2 , 1 } a = \left\{ {1,2,3,2,2,3,1,3,2,1,2,3,1,2,1,2,3,2,1} \right\}

1、统计数组内元素的种类数

import java.util.*;

public class ArrayCountExample1 {	
	public static int arraycount(int [] a) {
		//计算一维数组的长度
		int n = a.length;
		//将数组拷贝到新的地址,这样对新数组操作不会改变原数组
		int [] tmp = new int [n];
		System.arraycopy(a, 0, tmp, 0, n); 
		//统计元素种类数
		int Num = 1;
		//将数组按元素大小重新排序
		Arrays.sort(tmp);
		for(int i = 1; i < n; i ++) {
			if (tmp[i] != tmp[i-1]) {
				Num ++;
			}
		}
		return Num;
	}

	public static void main(String[] args) {
		// 数组a
		int [] a = {1,2,3,2,2,3,1,3,2,1,2,3,1,2,1,2,3,2,1};
		int aNum = arraycount(a);
		System.out.println("数组a的元素种类数为:" + aNum);

	}
}

结果:

数组a的元素种类数为:3

2、统计数组内每种元素的数量

import java.util.*;

public class ArrayCountExample2 {

	public static void main(String[] args) {
		int [] a = {1,2,3,2,2,3,1,3,2,1,2,3,1,2,1,2,3,2,1};
		//计算一维数组的长度
		int n = a.length;
		//将数组拷贝到新的地址,这样对新数组操作不会改变原数组
		int [] tmp = new int [n];
		System.arraycopy(a, 0, tmp, 0, n); 
		//统计元素种类数
		int Num = 1;
		//将数组按元素大小重新排序
		Arrays.sort(tmp);
		for(int i = 1; i < n; i ++) {
			if (tmp[i] != tmp[i-1]) {
				Num ++;
			}
		}
		//用于存储不同元素的数组
		int [] b1 = new int [Num];		
		//用于存储元素数量的数组
		int [] b2 = new int [Num];
		for (int i = 0; i < Num; i ++) {
			b2[i] = 1;
		}
		//b1与b2的指针
		int j = 0;
		for(int i = 1; i < n; i ++) {
			if (tmp[i] == tmp[i-1]) {
				b1[j] = tmp[i];
				b2[j] ++;
			}
			else {
				j ++;
				b1[j] = tmp[i];
			}
		}
		System.out.println("数组a的元素种类为:" + Num);
		System.out.println("数组a的不同元素列表" + b1);
		System.out.println("数组a不同元素的数量列表" + b2);
	}
}

结果

数组a的元素种类为:3
数组a的不同元素列表[I@5c8da962     [1, 2, 3]
数组a不同元素的数量列表[I@512ddf17   [6, 8, 5]

猜你喜欢

转载自blog.csdn.net/Luqiang_Shi/article/details/86522180
今日推荐