/*

* 需求:去除整型数组中重复的元素,不能使用集合等方法

*

* 解决思路:

* 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 集合数组 例子_Java数组元素去重(不使用集合)(示例代码)相关推荐

  1. java卡片布局例子_Java编程使用卡片布局管理器示例【基于swing组件】

    本文实例讲述了java编程使用卡片布局管理器.分享给大家供大家参考,具体如下: 运行效果: 完整示例代码: package com.han; import java.awt.borderlayout; ...

  2. java微信红包开发_java写的伪微信红包功能示例代码

    性能优化点: 1.使用int不使用double.(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点后前两位. 2.random() 方法用于返回一个随机数, ...

  3. Java EasyExcel在Web网站中读写Excel的方法及示例代码

    使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...

  4. java 数组删除_Java数组删除指定元素的方法(按数组角标删除)

    Java最有效的删除数组指定元素的方法,应该属于这一种形式,下面是Java数组按角标删除数据的工具类,代码如下:public static byte[] removeTheElement(byte[] ...

  5. java数组更新_java数组

    数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...

  6. java数组解析_Java - 数组解析

    一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样 ...

  7. Java数组参考_Java数组

    数组变量 VS 数组对象 先看一例子: int[] primitiveArray; //在栈中声明了一个引用变量,暂时还没指向任何对象 primitiveArray = new int[5]; //在 ...

  8. java数组重复_JAVA数组去除重复数据

    一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List list = new ArrayList();for (int i=0; i list.ad ...

  9. java定义数组范围_Java数组的定义和使用

    为什么需要数组? 问题:我们要计算30个学生的平均分 如果没有数组,我们的代码是这样的 int score1 = 32; int score2 = 56; int score3 = 78; //--此 ...

最新文章

  1. “2017 和 2019的对比”刷屏!各路高手出招,画风逐渐失控
  2. MySQL 5.7 密码策略
  3. POJ 2186 Tarjan
  4. 对于生活服务小公司网站的看法
  5. 利用gcc的-finstrument-functions获取函数轨迹跟踪
  6. tableau必知必会之如何在同一视图中进行相同分析维度图表的切换
  7. NLP:自然语言处理技术近十年发展技术更迭的简介、案例之详细攻略(持续更新)
  8. 年月日_C++计算输入的年月日是这一年的第几天
  9. 使用append之后数组维度消失_JAVA魅力之神奇的数组带给你不一样的乐趣
  10. boost::mpl模块实现insert_range相关的测试程序
  11. 解析时分秒_三年级上册,数学期中复习卷(含详细答案解析),有效提分,收藏...
  12. 如何实现一个优秀的散列表!
  13. Android 上千张图片的列表滑动加载
  14. Opera Android将支持HTML5和Flash功能
  15. 【 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛】1002.array【主席树】
  16. 组装电脑配件选择教程
  17. C/C++ Npcap包实现数据嗅探
  18. 设置计算机网络文件共享,局域网共享文件设置方法图文教程
  19. Arcgis实例学习5--统计直方图、空间分布图、统计信息
  20. python视频人脸检测_OpenCV + python 实现人脸检测(基于照片和视频进行检测)

热门文章

  1. 实现DropDownList 无刷新的联动效果
  2. 华为机试HJ68:成绩排序
  3. 基于matlab的谱估计,基于MATLAB的功率谱估计实验.doc
  4. android个人理财通项目_怎么开通微信理财通,利用闲钱赚收益
  5. db2 删除索引_程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  6. CSS基础——盒子模型【学习笔记】
  7. CSS基础——CSS字体样式属性【学习笔记】
  8. c++重载、覆盖及隐藏规则
  9. mysql怎么看历史最高连接数_MySQL数据库怎么查看和修改最大连接数
  10. simulik中的液压建模Simscape_Fluids资料收集及学习(原SimHydraulics)