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

  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. 【 MATLAB 】信号处理工具箱之 dct 简介及案例分析
  2. iOS--动画demo--Launch Image淡出效果
  3. messenger支持查找附近的人功能吗_最新的 macOS Catalina 正式版,值得更新吗?
  4. zookeeper在window下的搭建
  5. jQuery中json对象与json字符串互换
  6. 阿里巴巴HBase高可用8年填坑实录
  7. 假设以带头结点的循环链表表示队列_关于反转链表,看这一篇就够了!
  8. 什么是压栈操作?指令:PUSH src ;src为16位操作数
  9. jQuery初识 - jQuery中的方法
  10. php 缩略图不失真,c#生成缩略图不失真的方法实例分享
  11. 哈工大SCIR lab带你从头开始了解Transformer
  12. JSARToolKit5文档翻译
  13. 计算机网络asp视频教程,ASP.net动态网页制作视频教程
  14. Tera Term和TTL(Tera Term Language)
  15. 大数据算法-重复率计算 ICardinality
  16. 知乎爬虫与数据分析(一)数据爬取篇
  17. 阅读不懂,图书之过——《大话设计模式》创作历程
  18. 2022年公示的第一家企业征信备案机构
  19. 78岁老人爱上玩乐器硬是学会了吹奏萨克斯
  20. 自动控制系统实验总结

热门文章

  1. mysql查询的优化
  2. 最实用大数据可视化分析工具
  3. python IDE环境
  4. 摇一摇 微信 浏览器
  5. hiredis——Redis的C++库(使用教程
  6. linux 跑天龙八部游戏脚本,天龙八部脚本免费版2019export
  7. 1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!
  8. STM32触摸屏按下检测多次解决方案
  9. Android程序员需掌握的JVM知识
  10. 普渡大学计算机图形,普渡大学计算机图形学技术研究生语言及申请要求-费用-课程设置...