JAVA里如何删除数组中重复的元素

比如int arr[ ] = new int[]{2,5,6,6,8,12,3,5} 去掉重复值后为int arr[] = new int[]{2,5,6,8,12,3}

private static int [ ] supRep( int [ ] x) {
int[] tempArray = new int[x.length];
boolean repeated = false;
int nbNonRep=0;

//Verify for each element
for (int i=0; i<x.length; i++){
for (int j=i+1; j<x.length; j++){
if (x[i]==x[j]){// x[i] is repeated
repeated = true;
break;
}
}

if (repeated == false){// a non repeated number
tempArray[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:
集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-09
遍历数组,遇到一样的去掉,不就行了
第2个回答  2011-04-09
先用Array.sort(arr)排序,在判断相同元素删除会简单很多
第3个回答  2011-04-09
把它的元素放到hashset中去,它自动就会给你去掉重复的。追问

我知道怎么去掉重复的了,用HashSet 或TreeSet都可以,但是这样会不会像楼上说的那样效率会非常低呢,他说的第一种方法我几乎看不懂

追答

他第一种方法在我看来不用去考虑,用系统的方法最高效,你把数组放到set中,再取出来就可以了。放进去的时候有重复的set自动就给你去掉了。

本回答被提问者采纳
第4个回答  推荐于2016-11-04
如下所示:
private void grid1_HyperLinkClick(object Sender, FlexCell.Grid.HyperLinkClickEventArgs e)
{
FlexCell.Cell cell = grid1.Cell(e.Row, 4);
if (cell != null && !string.IsNullOrEmpty(cell.Text))
{
FrmStatisticDetail dlg = new FrmStatisticDetail();
dlg.KeyCondition = cell.Text;
dlg.ShowDialog();
}
e.URL = "";
e.Changed = true;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网