java 将int类型数组存入Set集合中

int[]arr1={10,12,15};int[]arr2={10,12,15};Set<int[]>set=newHashSet<int[]>();set.add(a... int[] arr1={10,12,15};
int[] arr2={10,12,15};
Set<int[]> set=new HashSet<int[]>();
set.add(arr1);
set.add(arr2);
Iterator ite=set.iterator();
while(ite.hasNext()){
System.out.println(Arrays.toString(((int[])ite.next())));
}
打印结果为[10, 12, 15] [10, 12, 15]
请问如何去重
展开
 我来答
死后是好人
2012-02-28 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:960万
展开全部
arr1和arr2是数组含耐,arr1和arr2存放的是你这两个数组的内存地址,直接放入set是无法自动去重的,因为他们的内存地址不一样
如果他们的长度一样,还是绝老迅手动并此去重吧
方法:
遍历set,挨个比较要被放入的数组,若已存在,则不放入
更多追问追答
追问
额,这样岂不是很蛋疼......
每次存之前还要用Iterator遍历,遍历后还要用for循环进行元素的比对....太复杂了,我等等看有没有更好的方法。
追答
int[] arr1={10,12,15};
int[] arr2={10,15,12};
算是重的吗?
flyingFish211
推荐于2018-03-01 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
因为arr1 == arr2 ---.> false
HashSet, 你这个很难实现的,用TreeSet然后重写compareTo可以实现通源闭过Set来驱重

TreeSet实现方案
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Ts {

/**
* @param args
*/
public static void main(String[] args) {

int[] arr1 = { 10, 12, 15 };
int[] arr2 = { 10, 12, 15 };

IntAry ary1 = new IntAry(arr1);
IntAry ary2 = new IntAry(arr2);

Set<IntAry> set = new TreeSet<IntAry>();
set.add(ary1);
set.add(ary2);

Iterator ite = set.iterator();
while (ite.hasNext()) {

System.out.println(Arrays.toString(((IntAry)ite.next()).getAry()));
}

}

}

class IntAry implements Comparable<IntAry>{
private int[] ary = null;

public IntAry(int[] ary){
this.ary = ary;
}

public int[] getAry(){
return ary;
}

public int compareTo(IntAry obj) {
int[] o = obj.getAry();
if(o.length != ary.length){
return -1;
}

for(int i = 0; i < ary.length; i++){
if(ary[i] != o[i]){
return -1;
}
}

return 0;
}

/雹扒裂/HashSet, seems impossible
/此穗/ public int hashCode() {
//
// return super.hashCode();
// }
//
}
更多追问追答
追问
额 重新定义一个数组类,你这个麻烦程度也不可小觑....
坐等更好的答案。
追答
不重写hashcode, 或者不重写comapreto这个应该实现不到的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仲夏灬夜之雨
推荐于2016-08-16 · TA获得超过516个赞
知道小有建树答主
回答量:132
采纳率:100%
帮助的人:85.2万
展开全部
public static void main(String[] args) {
int[] a={1,2,3};
int[] b={2,3,1};
Arrays.sort(b);
System.out.println(Arrays.toString(a).equals(Arrays.toString(b)));
}
如果楼主每个数组都排序的话,你可以用Arrays.toString(a)将里面的数组转换成String用String的锋亏equals判断下就能找到了.
这样的话,你写一个很简单的方法遍历下不答基卖清逗就行了,不存在再存,存在就不存了 .
貌似也没什么好的方法了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友09393c6
2012-02-28 · 超过13用户采纳过TA的回答
知道答主
回答量:174
采纳率:0%
帮助的人:60.3万
展开全部
说清楚
追问
在set中存入长度一样的 int 类型数组,如何去除里面值一样的数组。
int[] arr1={10,12,15};
int[] arr2={10,12,15};
这两个长度和元素都一样,存入set中如何去掉重复。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶丶倾听
2021-12-15
知道答主
回答量:3
采纳率:0%
帮助的人:1734
展开全部
如果你的数野橘唯组时固定大小,你可以试着把数组转成int(Integer)存颂培入,再去伍清container比较。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式