Java数组去重问题
方法一:
使用两个标志位进行标定去重。此方法无需使用任何容器,也不需要另外开辟数组空间,推荐使用,但丢失了数组元素之间的位置信息。
- 先对数组进行排序;
- 初始化两个标志位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数组去重问题相关推荐
- (PASS)JAVA数组去重 三种方法 (不用集合)
第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01;import java.sql.Array; import ...
- java数组去重方法是,java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- (网页)java数组去重总结(转)
转自CSDN: 1.背景 根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录. 2.实现方法 总结了四种方法,接下来进行展示 1.方法一 //数组去重方法一 St ...
- Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式
[Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...
- java数组去重总结
1.背景 根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录. 2.实现方法 总结了四种方法,接下来进行展示 1.方法一 //数组去重方法一String[] ar ...
- java 数组去重排序_Java实现的数组去重与排序操作详解
本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...
- Java数组去重的多种方法
/* 数组去重 1:遍历数组,将元素依次添加进结果集中,如果结果集中已经存在,则不再添加,O(n*n) 2:如果知道元素范围,比如是字母,或者数字在固定范围内,可以采用辅助数组,辅助数组下标是去重数组 ...
- JAVA数组去重方法
记录JAVA中数组去重方法 1利用Set的特性去重复 Set set = new HasSet();for (int x=0 ; x<arr.length ; x++){set.add(arr[ ...
- java数组去重_数组去重12种方案-你要的全在这
首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...
- java数组去重_再谈JavaScript数组去重
JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...
最新文章
- 【 MATLAB 】信号处理工具箱之 dct 简介及案例分析
- iOS--动画demo--Launch Image淡出效果
- messenger支持查找附近的人功能吗_最新的 macOS Catalina 正式版,值得更新吗?
- zookeeper在window下的搭建
- jQuery中json对象与json字符串互换
- 阿里巴巴HBase高可用8年填坑实录
- 假设以带头结点的循环链表表示队列_关于反转链表,看这一篇就够了!
- 什么是压栈操作?指令:PUSH src ;src为16位操作数
- jQuery初识 - jQuery中的方法
- php 缩略图不失真,c#生成缩略图不失真的方法实例分享
- 哈工大SCIR lab带你从头开始了解Transformer
- JSARToolKit5文档翻译
- 计算机网络asp视频教程,ASP.net动态网页制作视频教程
- Tera Term和TTL(Tera Term Language)
- 大数据算法-重复率计算 ICardinality
- 知乎爬虫与数据分析(一)数据爬取篇
- 阅读不懂,图书之过——《大话设计模式》创作历程
- 2022年公示的第一家企业征信备案机构
- 78岁老人爱上玩乐器硬是学会了吹奏萨克斯
- 自动控制系统实验总结