JAVA中如何从ArrayList中删除重复对象
JAVA中如何从ArrayList中删除重复对象,注意是对象,网上给出的例子都是删除重复的基本类型,重复对象是删不了的,验证通过立即给分.http://zhidao.ba...
JAVA中如何从ArrayList中删除重复对象, 注意是对象, 网上给出的例子都是删除重复的基本类型, 重复对象是删不了的, 验证通过立即给分.
http://zhidao.baidu.com/question/464567103.html
http://zhidao.baidu.com/question/464535116.html
http://zhidao.baidu.com/question/464535116.html
这三个问题打包发布, 其实是同一个问题, 解决一个就能解决全部 展开
http://zhidao.baidu.com/question/464567103.html
http://zhidao.baidu.com/question/464535116.html
http://zhidao.baidu.com/question/464535116.html
这三个问题打包发布, 其实是同一个问题, 解决一个就能解决全部 展开
7个回答
展开全部
你List中方的是什么?同一种类型对象,判断是否相同需要重写该类的equals()和hashCode()方法,这样就可以放到set中去重。如果是多少种不同类型对象或多种基本类型,那么如何判断是否重复?
arrayList.add(new String("123"));
arrayList.add(new String("123"));
arrayList.add(new int[] { 1, 2, 3 });
arrayList.add(new int[] { 1, 2, 3 });
如果仅仅只是基本类型和字符串对象可以再转换成字符串判断是否重复。
如果是自定义多种不同类型对象,没法进行比较是否重复。或者你把list里面具体放入的是什么类型对象贴出来根据实际情况给你去重。
arrayList.add(new String("123"));
arrayList.add(new String("123"));
arrayList.add(new int[] { 1, 2, 3 });
arrayList.add(new int[] { 1, 2, 3 });
如果仅仅只是基本类型和字符串对象可以再转换成字符串判断是否重复。
如果是自定义多种不同类型对象,没法进行比较是否重复。或者你把list里面具体放入的是什么类型对象贴出来根据实际情况给你去重。
追问
我现在是想实现一个通用的去除 ArrayList 中重复对象的方法, Object类型不定, 所以难点就在这里, 有可能是Integer, 有可能是int[], 也有可能是自己定义的一个类, 但只要是重复就去除.
网上能找到的方法我都试过, 都只是针对基本类型有效, 对对象无效.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你给对象写一个toString方法,用这个标识,然后字符串一样的就不添加,能够过滤掉了
更多追问追答
追问
你把下面arrayList里的重复元素, 包括基本类型和对象, 删除就可以了
ArrayList arrayList = new ArrayList();
arrayList.add(123);
arrayList.add(123);
arrayList.add(new String("123"));
arrayList.add(new String("123"));
arrayList.add(new int[] { 1, 2, 3 });
arrayList.add(new int[] { 1, 2, 3 });
追答
你不是矛盾么,你说的是对象,你有没有说,任何类型的,那你toString的时候加个类型信息呗。你不设置list的类型,还想去重,那只能先判断类型,再判断内容了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道我下边写的你能不能看懂,如果不懂可以追问我
List list = new ArrayList();
Object s = new Object();
for(int i = 0;i<5;i++){
list.add(s);
}
for(int i = 0;i<list.size();i++){
for(int j = i+1;j<list.size();j++){
if(list.get(i).equals(list.get(j))){
list.remove(i);
i--;
break;
}
}
}
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
List list = new ArrayList();
Object s = new Object();
for(int i = 0;i<5;i++){
list.add(s);
}
for(int i = 0;i<list.size();i++){
for(int j = i+1;j<list.size();j++){
if(list.get(i).equals(list.get(j))){
list.remove(i);
i--;
break;
}
}
}
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
更多追问追答
追问
list.add(new int[] { 1, 3, 4 });
list.add(new int[] { 1, 3, 4 });
list.add(new String("123"));
list.add(new String("123"));
用这个取代循环赋值时, 有问题
追答
正常来说应该没有问题,你是不在定义list的时候加泛型了,
比如:List list ;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
遍历之,迁移到set中。(要求,必须有正确的hashcode和equals方法)
更多追问追答
追问
你这是从网上抄的, 自己肯定没有测试过, 也没有仔细看我的问题, 所以不能给分.
追答
我现在就给你写一个例子 10分钟
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
List<T>,ArrayList<T>都是泛型,给你例子意义不大,关键是要自己会举一反三;
如果你想往List里放对象,保证你心中的那个唯一,请重写hashcode()和equals()方法;
有个简单的方法是可以用Set,像@FourQueue 提到的那样。
如果你想往List里放对象,保证你心中的那个唯一,请重写hashcode()和equals()方法;
有个简单的方法是可以用Set,像@FourQueue 提到的那样。
追问
兄弟, 没有写代码, 没有测试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询