java去除数组重复元素的四种方法

方法1:

需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组。方法System.arraycopy(被复制的数组,起始下标,接收的新数组,起始下标,结束下标);可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再去将临时数组拷贝到新数组就行了。

package testPro.test;

public class testDistinctArr {

	public static void main(String[] args) {
		String[] arr = new String[7];
		arr[0] = "a";
		arr[1] = "a";
		arr[2] = "b";
		arr[3] = "c";
		arr[4] = "d";

		System.out.println(arr.toString());
		for (String s : arr) {
			System.out.println(s);
		}
		System.out.println("===============");
		Object[] s  = ifRepeat(arr);
		for (Object o : s) {
			System.out.println(o);
		}

	}

	/**
     * 去掉数组中重复的元素
     *
     * @param arr
     * @return
     */
	//方法一:需要传入一个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;
    }
}

去重效果:

方法2:

只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。

 public static Object[]  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();
		return newArr;  

    }  

运行效果:

方法3:

利用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();
    } 

运行效果:

方法4:

链表的哈希集合:有顺序,不重复。

 public static Set<Object>  ifRepeat4(Object[] arr){  

        Set<Object> haoma = new LinkedHashSet<Object>();
        for (int i = 0; i < arr.length; i++) {
            haoma.add(arr[i]);
        }
		return haoma;  

    } 

运行效果:

到此这篇关于java去除数组重复元素的四种方法的文章就介绍到这了,更多相关java去除数组重复元素内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java中删除数组中重复元素方法探讨

    问题:比如我有一个数组(元素个数为0哈),希望添加进去元素不能重复. 拿到这样一个问题,我可能会快速的写下代码,这里数组用ArrayList. 复制代码 代码如下: private static void testListSet(){        List<String> arrays = new ArrayList<String>(){            @Override            public boolean add(String e) {         

  • java去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]. 输入 一个已排序的数组,例如[1,1,2]. 输出 返回数组新的长度,例如length=2. 快慢指针法 设置fast指针遍历数组,slow指针指向不重复元素的下一位. public static int remov

  • Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    本文实例讲述了Java实现删除排序数组中重复元素的方法.分享给大家供大家参考,具体如下: 题目描述: 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 一:通过ArrayList解决 时间复杂度和空间复杂度都为O(n) ArrayList<Integer> list = new ArrayList<Integer>(); // 去掉数组中重复的元素 public int r

  • java学习之一维数组中重复元素的去除

    目录 一.基本思路 二.步骤 1.设置判断数组Arr[ ] 2.继承数组newArr[ ]获取不重复元素 总结 一.基本思路 首先,假设一个一维数组arr[ ]={ 4, 3, 35, 3, 2, 4, 6, 3},其中有三个重复元素 3,4,3.要如何剔除呢,由于还没有涉猎到一些经典的调用,所以我选择了用新的数组newArr[ ]去继承原来数组中的不重复的元素,另外还需要一个判断数组Arr[ ],来判断arr[ ]中哪几个元素是重复的,才好去除掉. 二.步骤 1.设置判断数组Arr[ ] 代码

  • java检查数组是否有重复元素的方法

    本文实例讲述了java检查数组是否有重复元素的方法.分享给大家供大家参考.具体实现方法如下: //判断数组中是否有重复值 public static boolean checkRepeat(String[] array){ Set<String> set = new HashSet<String>(); for(String str : array){ set.add(str); } if(set.size() != array.length){ return false;//有重

  • java去除数组重复元素的四种方法

    方法1: 需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组.方法System.arraycopy(被复制的数组,起始下标,接收的新数组,起始下标,结束下标);可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再去将临时数组拷贝到新数组就行了. package testPro.test; public class testDi

  • JavaScript实现删除数组重复元素的5种常用高效算法总结

    本文实例讲述了JavaScript实现删除数组重复元素的5种常用高效算法.分享给大家供大家参考,具体如下: 这里就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码. 1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1

  • 详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String containValue){ return Arrays.asList(arr).contains(containValue); } 需要注意的是Arrays.asList这个方法中转换的List并不是java.util.ArrayList而是java.util.Arrays.ArrayList,其中java.

  • javascript中去除数组重复元素的实现方法【实例】

    在实际应用中,我们很多时候都可能需要去除数组中的重复元素,下面就是javascript数组去重的方法实现: <script language="javascript"> <!-- /*判断数组中是否存在某个元素的方法*/ function isExistInArr(_array, _element){ if(!_array || !_element) return false; if(!_array.length){ return (_array == _elemen

  • java List去掉重复元素的几种方式(小结)

    使用LinkedHashSet删除arraylist中的重复数据(有序) LinkedHashSet是在一个ArrayList删除重复数据的最佳方法.LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 List<String> words= Arrays.asList("a","b","b","c","c","d"); HashSet<

  • Python字典删除键值对和元素的四种方法(小结)

    目录 1.del删除字典本身 2.pop()删除字典键值对  3.popitem()删除字典键值对 4.clear()删除字典键值对:清空字典中的所有内容,但是不删除字典本身,del删除字典本身 在删除每个字典的时候有些方法和删除其他拥有独立内存的数据使用的方法是一样的,比如del,直接清空内存,clear()是值清除变量值.字典的删除我们从字典对象本身和字典中的键值对两个方面出发,来学习一下. 1.del删除字典本身 del就是从内存级别删除字典本身,让这个字典对象彻底消失.同时也可以删除字典

  • python中list列表删除元素的四种方法实例

    目录 在python列表中删除元素主要分为以下3种场景: del:根据索引值删除元素 pop():根据索引值删除元素 remove():根据元素值进行删除 clear():删除所有元素 补充: 删除元素的变相方法 总结 在python列表中删除元素主要分为以下3种场景: 根据目标元素所在的索引位置进行删除,可以使用del关键字或pop()方法: 根据元素本身的值进行删除,可使用列表(list类型)提供的remove()方法: 将列表中所有元素全部删除,可使用列表(list类型)提供的clear(

  • Javascript循环删除数组中元素的几种方法示例

    本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面来看看详细的介绍: 发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运行. 下面以一段Javascript代码为例演示这一过程. (function () { var arr = [1,2,2,3,4,5]; var len = arr.lengt

  • JavaScript判断数组重复内容的两种方法(推荐)

    前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码: var arr = ["aa","bb",&q

  • C#去除DataTable重复数据的三种方法

    业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避免目标库插入重复数据.这重复数据可能是源数据库本身就有重复数据,还有就是已经插入避免重复插入. 过滤自身重复数据解决方案 第一种:采用DataView.ToTable()方法 DataView.ToTable 方法 .NET Framework 2.0 其根据现有 DataView中的行,创建并返回

随机推荐