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

本文介绍如何使用Java来统计数组内元素的种类数和每种元素出现的具体数量,包括两个主要部分:一是计算数组内不同元素的种类,二是统计每个元素的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【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\} a={1,2,3,2,2,3,1,3,2,1,2,3,1,2,1,2,3,2,1}

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]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值