java ArrayList 如何去掉重复的对象以及本身

ArrayListal=newArrayList();XYPointxy=newXYPoint();XYPointxy2=newXYPoint();XYPointxy3=... ArrayList al = new ArrayList();
XYPoint xy = new XYPoint();
XYPoint xy2 = new XYPoint();
XYPoint xy3 = new XYPoint();
xy.setXpoint(1);
xy.setYpoint(1);

al.add(xy);
ArrayList al2 = new ArrayList();
ArrayList al3 = new ArrayList();
XYPoint xy21 = new XYPoint();
XYPoint xy22 = new XYPoint();
XYPoint xy23 = new XYPoint();
xy21.setXpoint(1);
xy21.setYpoint(1);
xy22.setXpoint(2);
xy22.setYpoint(2);
xy23.setXpoint(3);
xy23.setYpoint(3);

去掉al al3 中重复的对象
展开
 我来答
STALKER_Scar
2013-06-10 · TA获得超过307个赞
知道小有建树答主
回答量:207
采纳率:50%
帮助的人:219万
展开全部

第一种:只要存在重复的元素全部删除

public ArrayList<Object> RemoveRepeated(ArrayList<Object> arr) {
    ArrayList<Object> tmpArr = new ArrayList<Object>();
    for(int i=0; i<arr.size(); i++) {
        if(tmpArr.contains(arr.get(i))) {
            tmpArr.remove(indexOf(arr.get(i)));
        }else {
            tmpArr.add(arr.get(i));
        }
    }
    return tmpArr;
}

第二种:存在重复的元素只保留一个

public ArrayList<Object> RemoveRepeated(ArrayList<Object> arr) {
    ArrayList<Object> tmpArr = new ArrayList<Object>();
    for(int i=0; i<arr.size(); i++) {
        if(!tmpArr.contains(arr.get(i))) {
            tmpArr.add(arr.get(i));
        }
    }
    return tmpArr;
}
澍哥好
2013-06-10 · TA获得超过386个赞
知道小有建树答主
回答量:379
采纳率:100%
帮助的人:359万
展开全部
网上有很多去掉arraylist里面重复的值的方法你可以上网搜一下,最简单的就是 使用HashSet转一下就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果然丨在动
2013-06-10 · TA获得超过719个赞
知道小有建树答主
回答量:672
采纳率:50%
帮助的人:330万
展开全部
你这是查找重复对象还是查找对象的重复属性值呢?、
如果是查找重复对象的话,就没有重复的,你每次都是new了XYPoint。
如果是查找对象的重复属性值的话,可以用循环取出对象,然后再比较对象·属性。
比较对象的话方法同上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凡特希科技
推荐于2016-03-22 · TA获得超过336个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:72.3万
展开全部
首先你要保证 XYPoint 类的equals方法有按照你认为相同的条件,进行重写。
for(int i=0;i<al.size();i++){
XYPoint xyp = (XYPoint)al.get(i);
if(al3.indexOf(xyp)!=-1){
al3.remove(al3.indexOf(xyp));
al.remove(i);
}
}
如果没有重写equals方法的话
for(int i=0;i<al.size();i++){
XYPoint xyp = (XYPoint)al.get(i);
// if(al3.indexOf(xyp)!=-1){
// al3.remove(al3.indexOf(xyp));
// al.remove(i);
// }
for(int j=0;j<al3.size();j++){
XYPoint al3_xyp = (XYPoint)al3.get(i);
在这里对 xyp 与 al3_xyp 进行比较是否相同,在去做删除动作
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Stale331x
2013-06-10 · TA获得超过1299个赞
知道小有建树答主
回答量:1276
采纳率:33%
帮助的人:829万
展开全部
如何理解你说的“本身”呢?
如果要在一个数据结构中,不包含其它相同的,你可以采用Set这个数据结构
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式