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} 展开
 我来答
Ja初学者va
2011-04-10 · TA获得超过212个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:118万
展开全部
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:
集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
yujingtaojing
2011-04-09 · TA获得超过467个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:486万
展开全部
遍历数组,遇到一样的去掉,不就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
marstianna
2011-04-09
知道答主
回答量:15
采纳率:0%
帮助的人:2万
展开全部
先用Array.sort(arr)排序,在判断相同元素删除会简单很多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
prosperMoney
2011-04-09 · TA获得超过279个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:141万
展开全部
把它的元素放到hashset中去,它自动就会给你去掉重复的。
追问
我知道怎么去掉重复的了,用HashSet 或TreeSet都可以,但是这样会不会像楼上说的那样效率会非常低呢,他说的第一种方法我几乎看不懂
追答
他第一种方法在我看来不用去考虑,用系统的方法最高效,你把数组放到set中,再取出来就可以了。放进去的时候有重复的set自动就给你去掉了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2016-11-04 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2823万
展开全部
如下所示:
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式