方法一:
使用两个标志位进行标定去重。此方法无需使用任何容器,也不需要另外开辟数组空间,推荐使用,但丢失了数组元素之间的位置信息。

  1. 先对数组进行排序;
  2. 初始化两个标志位p、q对排好序的数组进行遍历

假设数组array排完序之后结果为1 2 2 2 3 4 4 5。
(具体分析内容有时间再码...)

public static void solution(int[] array){//先排序Arrays.sort(array);//然后用两个标志位进行标定去重int p=0,q=0;for(int i = 0; i < array.length-1; ++i){if(array[i] != array[i + 1]){if(p < q){array[p+1] = array[q+1];p++;q++;}else{p = i + 1;}}else{q = i + 1;}}//将去重之后的数组输出for(int i = 0; i <= p; ++i){System.out.print(array[i] + " ");}System.out.println("length = " + (p+1));}

方法二:
使用Java中的Set容器进行去重。使用方便,但依赖Set容器。
不用事先排好序,利用Set容器中元素不能重复的特性,但也丢失了数组元素之间的位置信息。

Set set = new HashSet<>();
for(int i = 0; i < array.length; ++i){set.add(array[i]);
}
//将不重复的元素返回给原始数组
int m = 0;
for(Iterator iterator = set.iterator(); iterator.hasNext();){array[m] = (int)iterator.next();m++;
}
//输出查看结果
for(int j = 0; j < set.size(); ++j){System.out.print(array[j] + " ");
}
System.out.println();
System.out.println("length = " + set.size());

方法三:
使用Java中的List容器进行去重。使用方便,但依赖List容器。
也不用事先排好序,可用contains方法判断list中有无这个元素,无则add进去,有则跳过,这样可以保留原始数组元素之间的相对位置信息。

List list = new ArrayList<>();for(int i = 0; i < array.length; ++i){if(!list.contains(array[i]))list.add(array[i]);}//将不重复的元素返回给原始数组for(int i = 0; i < list.size(); ++i){array[i] = (int)list.get(i);}//输出查看结果for(int i = 0; i < list.size(); ++i){System.out.print(array[i] + " ");}System.out.println();System.out.println("length = " + list.size());

欢迎探讨~

更多内容可查看 个人简书:https://www.jianshu.com/u/500ae27eaf05

Java数组去重问题相关推荐

  1. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01;import java.sql.Array; import ...

  2. java数组去重方法是,java数组去重的两种方法

    我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...

  3. (网页)java数组去重总结(转)

    转自CSDN: 1.背景 根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录. 2.实现方法 总结了四种方法,接下来进行展示 1.方法一 //数组去重方法一 St ...

  4. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式

    [Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...

  5. java数组去重总结

    1.背景 根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录. 2.实现方法 总结了四种方法,接下来进行展示 1.方法一 //数组去重方法一String[] ar ...

  6. java 数组去重排序_Java实现的数组去重与排序操作详解

    本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...

  7. Java数组去重的多种方法

    /* 数组去重 1:遍历数组,将元素依次添加进结果集中,如果结果集中已经存在,则不再添加,O(n*n) 2:如果知道元素范围,比如是字母,或者数字在固定范围内,可以采用辅助数组,辅助数组下标是去重数组 ...

  8. JAVA数组去重方法

    记录JAVA中数组去重方法 1利用Set的特性去重复 Set set = new HasSet();for (int x=0 ; x<arr.length ; x++){set.add(arr[ ...

  9. java数组去重_数组去重12种方案-你要的全在这

    首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...

  10. java数组去重_再谈JavaScript数组去重

    JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...

最新文章

  1. 噪声标签的负训练:ICCV2019论文解析
  2. 华月互网获得2012全国十大IDC服务商
  3. python得到一个10位随机数的方法及拓展
  4. python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君
  5. 【机器学习】机器学习用到的常用术语
  6. django1.11使用mysql_django 1.11.1 连接MySQL
  7. Python与Memcached交互
  8. MySQL数据库23道安全保障
  9. RxJava -- 从 create 开始 (一)
  10. unity基础(1)——unity编辑器的基本介绍
  11. 中国能源物联网行业运营格局及供需态势分析报告2022-2028年版
  12. Vue项目中设置背景图片
  13. 行为型模式----golang实现
  14. 机器学习是安全?还是威胁?
  15. redis的集成在springbooot版本之间差异(主要分为1.4版本之前后之后)
  16. 计算机wlan打不开怎么回事,笔记本电脑wlan打不开怎么回事
  17. 如何解决MathType无法正常使用问题
  18. 怎样精确计算股市主力的持仓量
  19. 虚拟机的三种联网方式
  20. 【论文阅读】Cross Language Image Matching for Weakly Supervised Semantic Segmentation

热门文章

  1. 物联网卡传感器赋能零售商品感应机制 开启智能零售新风尚
  2. java 处理unicode_[转]Java的Unicode编码转化(多种情况处理方法)
  3. 小程序开发--表格table的实现
  4. 微信小程序上实现 table 表格
  5. 土木工程与计算机专业考研学校排名,土木工程专业考研学校排名
  6. 用c++实现贪吃蛇小游戏,初学者记录一下首次实现的经历,有超详细的思路与语法讲解,新手向
  7. 树梅派应用47:用树莓派给智能手机发送推送通知
  8. 基于深度学习的医学图像分割学习笔记(九)UNet 3+
  9. html5 3d游戏引擎演示,HTML5、JavaScript 3D游戏引擎和框架
  10. JAVA小知识——换行的几种方式