java 删除数组中重复元素
2012-11-07 19:38
651 查看
package com.akfucc.zhidao; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class P124876743 { public static void main(String[] args) { int[] nums = { 1, 2, 3, 3, 3, 3, 4 }; List<Integer> numList = new ArrayList<Integer>(); for (int i : nums) numList.add(i); System.out.println(numList); // 做删除 Iterator<Integer> it = numList.iterator(); int temp = -1; if (it.hasNext()) temp = it.next(); while (it.hasNext()) { int i = it.next(); if (i == temp) { it.remove(); } else { temp = i; } } System.out.println(numList); } }
---------------------------------------
把数组中的元素取出放入一个HashSet中,这样就可以过滤重复的值了。
用hashset 重复的自动去掉了 HashSet hashset=new HashSet(); hashset。add(1); 都加进去 Iterator iterator=hashset。itertaor(); 做一个while循环 输出 就ok了-------------------------------------------------
如果你要得到的数组可以无序的话将原数组里的元素放到HashSet中就行了,如果你想得到的数组还要之前的顺序的话,就只能一个个比了,从头开始遍历,看每个元素跟它前面的元素有没有重复有则删掉。-----------------------------------------------------
Integer str[] = {1,2,3,3,3,4}; Set <Integer>set=new TreeSet<Integer>(Arrays.asList(str)); Integer[] newArray=set.toArray(new Integer[set.size()]) ; for(Integer i:newArray){ System.out.println(i); } //System.out.println(set);
--------------------------------------------
private static int [ ] supRep( int [ ] x) {int[] tempArray = new int[x.length];boolean repeated = false;int nbNonRep=0;//Verify for each elementfor (int i=0; i<x.length; i++){for (int j=i+1; j<x.length; j++){if (x[i]==x[j]){// x[i] is repeatedrepeated = true;break;}}if (repeated == false){// a non repeated numbertempArray[nbNonRep++]=x[i];}repeated = false;}int[] resultArray = new int[nbNonRep];System.arraycopy(tempArray, 0, resultArray, 0, nbNonRep);return(resultArray);}public static void main(String[] args) {int [ ] arr = new int[]{2,5,6,6,8,12,3,5};int [] a = supRep(arr);for (int i = 0; i<a.length; i++){System.out.print(a[i]+ " ");}}-------------------------------------------------------------------------测试结果:run:2 6 8 12 3 5 成功生成(总时间:0 秒)-------------------------------------------------------------------------当然,我是用两个两个数比较的,如果数据量非常大,比如几万几十万或者更多数字,最好做一个Tree,这样浏览一遍你的Array就OK了-------------------------------------------------------------------------如果想要简单,用ArrayList就可以了:ArrayList myList = new ArrayList();for (int i=0; i<arr.length; i++){if (!myList.contains(arr[i])) myList.add(arr[i]);}for (int i = 0; i<myList.size();i++){System.out.print(myList.get(i) + ", ");}不过程序效率肯定是不高的ArrayList:底层用数组实现的List 。特点:查询效率高,增删效率低 轻量级 线程不安全。HashSet:采用哈希算法来实现Set接口, 唯一性保证:重复对象equals方法返回为true ,重复对象hashCode方法返回相同的整数不同对象 哈希码 尽量保证不同(提高效率)。TreeMap:集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
相关文章推荐
- java中删除数组中重复元素方法探讨
- Java代码实现删除一个有序数组里面的重复元素
- Java 使用List,Set将Person数组中的重复元素删除
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】
- Java 删除数组中重复的元素
- 探讨:java中删除数组中重复元素
- Leet Code 26 删除有序数组中重复元素 - Java
- Java中删除数组中重复元素
- java删除数组中重复元素
- JavaScript之删除数组中重复元素的方法
- Leetcode 最小二叉树深度和删除数组重复元素
- (Java) LeetCode 82. Remove Duplicates from Sorted List II —— 删除排序链表中的重复元素 II
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 给数组添加一个根据指定下标删除元素的方法、得到0-100的随机数不重复(js)、得到外联样式的css样式值
- 如何删除有序数组中的重复元素
- 将一个数组中的重复元素保留一个其他的清零(Java)
- 删除数组中的重复元素,并返回去重的数组
- 在PERL中删除数组中重复的元素,并按序排列
- Java删除ArrayList中的重复元素的2种方法
- 【LeetCode-面试算法经典-Java实现】【027-Remove Element(删除数组中指定的元素)】