java去除数组重复元素的四种方法
- package com.yzycool.test;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedHashSet;
- import java.util.List;
- import java.util.Set;
- /*去除重复的数组:
- * 方法一:需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组。方法System.arraycopy(被复制的数组,起始下标,接收的新数组,起始下标,结束下标);可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再去将临时数组拷贝到新数组就行了。
- * 方法二:只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。
- * 方法三:最简单的方法就是利用Set集合无序不可重复的特性进行元素过滤。
- * 方法四:链表的哈希集合:有顺序,不重复。
- */
- public class ShijuanDa1 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String[] strs ={"2007-1-01","2007-1-06",
- "2007-1-01","2007-1-08","2007-1-08"};
- printArr(strs);
- System.out.println("------------");
- Object[] newArr = ifRepeat(strs);
- printArr(newArr);
- System.out.println("------------");
- ifRepeat2(strs);
- System.out.println("------------");
- Object[] newArr3 = ifRepeat3(strs);
- printArr(newArr3);
- System.out.println("------------");
- ifRepeat4(strs);
- }
- public static void printArr(Object[] arr) {
- for (Object object : arr) {
- System.out.println(object);
- }
- }
- //方法一:需要传入一个Object数组,然后返回去重后的数组
- public static Object[] ifRepeat(Object[] arr){
- //用来记录去除重复之后的数组长度和给临时数组作为下标索引
- int t = 0;
- //临时数组
- Object[] tempArr = new Object[arr.length];
- //遍历原数组
- for(int i = 0; i < arr.length; i++){
- //声明一个标记,并每次重置
- boolean isTrue = true;
- //内层循环将原数组的元素逐个对比
- for(int j=i+1;j<arr.length;j++){
- //如果发现有重复元素,改变标记状态并结束当次内层循环
- if(arr[i]==arr[j]){
- isTrue = false;
- break;
- }
- }
- //判断标记是否被改变,如果没被改变就是没有重复元素
- if(isTrue){
- //没有元素就将原数组的元素赋给临时数组
- tempArr[t] = arr[i];
- //走到这里证明当前元素没有重复,那么记录自增
- t++;
- }
- }
- //声明需要返回的数组,这个才是去重后的数组
- Object[] newArr = new Object[t];
- //用arraycopy方法将刚才去重的数组拷贝到新数组并返回
- System.arraycopy(tempArr,0,newArr,0,t);
- return newArr;
- }
- /*
- * 方法二:只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。
- */
- public static void ifRepeat2(Object[] arr){
- //创建一个集合
- List list = new ArrayList();
- //遍历数组往集合里存元素
- for(int i=0;i<arr.length;i++){
- //如果集合里面没有相同的元素才往里存
- if(!list.contains(arr[i])){
- list.add(arr[i]);
- }
- }
- //toArray()方法会返回一个包含集合所有元素的Object类型数组
- Object[] newArr = list.toArray();
- //遍历输出一下测试是否有效
- for(int i=0;i<newArr.length;i++){
- System.out.println(" "+newArr[i]);
- }
- }
- /*
- * 方法三:最简单的方法就是利用Set集合无序不可重复的特性进行元素过滤。
- */
- public static Object[] ifRepeat3(Object[] arr){
- //实例化一个set集合
- Set set = new HashSet();
- //遍历数组并存入集合,如果元素已存在则不会重复存入
- for (int i = 0; i < arr.length; i++) {
- set.add(arr[i]);
- }
- //返回Set集合的数组形式
- return set.toArray();
- }
- /*
- * 方法四:链表的哈希集合:有顺序,不重复。
- */
- public static void ifRepeat4(Object[] arr){
- LinkedHashSet<Object> haoma = new LinkedHashSet<Object>();
- for (int i = 0; i < arr.length; i++) {
- haoma.add(arr[i]);
- }
- // 创建迭代器
- Iterator<Object> iterator = haoma.iterator();
- int a = 0;
- // 迭代集合
- while (iterator.hasNext()) { // true
- Object c = iterator.next();
- System.out.println(c);
- }
- }
- }
java去除数组重复元素的四种方法相关推荐
- java:去除数组重复元素的四种方法
方法1: 需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组.方法System.arraycopy(被复制的数组,起始下标,接收的新 ...
- php 从数组里删除元素,PHP从数组中删除元素的四种方法实例
PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...
- java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较
1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...
- xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...
excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法,最近到了季度汇报的时候,掌握一手excel技能在此刻显得多么重要,为了是你的excel看起来更高大上,今天教大家设置 ...
- java 中lock,java中lock获取锁的四种方法
在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...
- python 字符串删除重复_Python删除list里的重复元素有几种方法?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
- Javascript循环删除数组中元素的3种方法
本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面与微点阅读小编一起来看看详细的介绍: 问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的 ...
- Java创建并执行线程的四种方法
Java创建并执行线程的四种方法 java里面创建线程有四种方式: 无返回: 实现Runnable接口,重写run(); 继承Thread类,重写run(); 有返回: 实现Callable接口,重写 ...
- yum 卸载 java,CentOS下安装JDK的四种方法和卸载JDK,centosjdk
CentOS下安装JDK的四种方法和卸载JDK,centosjdk 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# m ...
最新文章
- oracle 10g rac重建crs
- TechTarget数据库Redis
- excel表格怎么调整行高和列宽_表格太宽,怎么打印在一页上?这招超简单
- 【Linux】一步一步学Linux——ld命令(256)
- 从严治码-系统集成项目之根本
- arduino蜂鸣器_板卡推荐BPIUNO32 arduino 开发板,支持webduino与arduino应用
- 长沙理工大学计算机考研难吗,长沙理工大学考研难吗?一般要什么水平才可以进入?...
- 丹佛斯变频器型号说明_台达变频器VFD-CH2000型号说明及功能介绍
- 如何用excel做正交分析_最简单的正交试验教程,一次搞懂它!
- 关于对接企业微信第三方服务商所踩的坑
- NameSilo使用API进行动态域名解析DDNS
- centos7 Qt5.9.1 ucal_close_53错误解决
- Java转Go语言 -4
- Android的消息循环机制:Handler
- 全面 一文理解微服务高可用的常用手段
- 基于vtkVoxelContoursToSurfaceFilter实现勾画图像的轮廓线面重建
- attention综述论文阅读:An Overview of the Attention Mechanisms in ComputerVision
- 详解:批处理框架_Spring Batch
- 美团cityId全国城市代码
- 安卓移动办公软件_细数小移动办公软件那些痛,戴尔电脑限时5折助力在线办公!...