Java数组元素去重(不使用集合)
Posted xuliang-daydayup
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数组元素去重(不使用集合)相关的知识,希望对你有一定的参考价值。
/*
* 需求:去除整型数组中重复的元素,不能使用集合等方法
*
* 解决思路:
* 1、对数组中的元素进行从小到大的顺序排序
* 2、获取数组中重复元素的个数
* 3、获取数组中重复元素的索引位置,并存入创建的索引数组
* 4、创建去重数组,去重数组长度 = 原始数组长度 - 重复元素个数
* 5、将原始数组的值赋给去重数组,遇到重复元素的索引位置则不赋值
*/
public class ShuZu {
public static void main(String[] args) {
int OldArray[] = {0,1,6,2,2,3,3,5,87,43,12,3,123,43,3,42,3,12,31,23,12,3,1,23,1,6,5,23};
//遍历原始数组
System.out.println("原始数组:");
for (int i = 0; i < OldArray.length; i++) {
System.out.print(OldArray[i] + " ");
}
System.out.println(); //换行作用
//冒泡排序,从小到大排序
for (int i = 1; i < OldArray.length; i++) {
for (int j = 0; j < OldArray.length - i; j++) {
if (OldArray[j] > OldArray[j+1]){
int temp = OldArray[j];
OldArray[j] = OldArray[j + 1];
OldArray[j + 1] = temp;
}
}
}
//计算重复元素的个数
int count = 0;
for (int i = 0; i < OldArray.length - 1; i++) {
//若后面元素等于前面元素,则表示有重复元素
if (OldArray[i] == OldArray[i + 1]){
count++;
}
}
//创建索引数组,保存原始数组中重复元素的索引位置
int index = 0;
int indexArray[] = new int[count];
for (int i = 0; i < OldArray.length - 1; i++) {
//若后面元素等于前面元素,则将后面元素的索引位置赋给索引数组
if (OldArray[i] == OldArray[i + 1]){
indexArray[index] = i + 1;
index++;
}
}
//创建去重数组
int newArray[] = new int[OldArray.length - count];
//定义索引数组的起始索引位置
int indexOfIndexArray = 0;
//定义去重数组的起始索引位置
int indexOfNewArray = 0;
for (int i = 0; i < OldArray.length; i++) {
//索引位置不能超过索引数组的边界
if(indexOfIndexArray < indexArray.length){
if(i == indexArray[indexOfIndexArray]){
indexOfIndexArray++;
}else {
//非重复元素赋予去重数组
newArray[indexOfNewArray] = OldArray[i];
//去重数组的索引位置自增1
indexOfNewArray++;
}
} else {
//非重复元素赋予去重数组
newArray[indexOfNewArray] = OldArray[i];
//去重数组的索引位置自增1
indexOfNewArray++;
}
}
//遍历去重数组
System.out.println("去重数组:");
for (int i = 0; i < newArray.length; i++) {
System.out.print(newArray[i] + " ");
}
}
}
运行结果如下:
原始数组:
0 1 6 2 2 3 3 5 87 43 12 3 123 43 3 42 3 12 31 23 12 3 1 23 1 6 5 23
去重数组:
0 1 2 3 5 6 12 23 31 42 43 87 123
以上是关于Java数组元素去重(不使用集合)的主要内容,如果未能解决你的问题,请参考以下文章