JAVA里如何删除数组中重复的元素
比如intarr[]=newint[]{2,5,6,6,8,12,3,5}去掉重复值后为intarr[]=newint[]{2,5,6,8,12,3}...
比如int arr[ ] = new int[]{2,5,6,6,8,12,3,5} 去掉重复值后为int arr[] = new int[]{2,5,6,8,12,3}
展开
5个回答
展开全部
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:
集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
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:
集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
展开全部
遍历数组,遇到一样的去掉,不就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用Array.sort(arr)排序,在判断相同元素删除会简单很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把它的元素放到hashset中去,它自动就会给你去掉重复的。
追问
我知道怎么去掉重复的了,用HashSet 或TreeSet都可以,但是这样会不会像楼上说的那样效率会非常低呢,他说的第一种方法我几乎看不懂
追答
他第一种方法在我看来不用去考虑,用系统的方法最高效,你把数组放到set中,再取出来就可以了。放进去的时候有重复的set自动就给你去掉了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如下所示:
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询