list 去掉重复值

wx_1021 2016-04-03 11:47:48
public Class bb{
private String a;
private String b;

省略get set...
}

List<bb> list = 数据库取出来值;

数据:
a:w1 b: 130013
a:w2 b:123123
a:w1 b:3214234

list怎么去掉重复的数据
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
injuer 2016-04-05
  • 打赏
  • 举报
回复
int i = 0 update to : int i = index use:deduplication(list, 0);
injuer 2016-04-05
  • 打赏
  • 举报
回复

public void deduplication(List list, int index) {
 if(index == list.size()){
  return;
 }
 for(int i = 0; i < list.size();i++){
  if(list.get(index).key.equals(list.get(i))){
    list.remove(i);
    break;
  }
 }
 index++;
 deduplication(list, index);
}
鸣鸣Amadues 2016-04-05
  • 打赏
  • 举报
回复
你讲的重复数据是不是说成员变量a和b都相等的情况? 如果是这样的话,那这里你混淆“重复数据”这个概念。 在Java里只有对象,对象相等也就是引用地址相等,不是对象里每个成员变量相等。 每个成员变量是否相等是需要自己手动判断的,你可以写个方法作判断。 简单点的做法是针对你这个类写个方法(类的成员变量已知),复杂点的做法写个通用方法针对所有类(类的成员变量未知),需要用到反射。
豫让_______ 2016-04-05
  • 打赏
  • 举报
回复
引用 5 楼 wx_1021 的回复:
[quote=引用 4 楼 fengspg 的回复:] class bb实现hashcode和equals方法,然后将list转成set,再将set转回去list,就实现了去重
这个方法我用了 没效果啊[/quote] 是可以的哟哥们,我想到的也是这个方法。

package util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class EqualsDemo {
	
	public static void main(String[] args) {
		List<Bb>  list = new ArrayList<Bb>();
		Bb a1 = new Bb("呵呵","呵呵");
		Bb a2 = new Bb("呵呵","呵呵");
		Bb a3 = new Bb("哈哈","哈哈");
		
		list.add(a1);
		list.add(a2);
		list.add(a3);
		Set<Bb> set = new HashSet<Bb>();
		set.addAll(list);
		for(Bb set1:set) {
			System.out.println(set1.getAa()+"---"+set1.getBb());
		}
		
	}

}
class Bb{
	String aa;
	String bb;
	
	public Bb(String aa,String bb){
		this.aa = aa;
		this.bb = bb;
	}
	public String getAa() {
		return aa;
	}
	public void setAa(String aa) {
		this.aa = aa;
	}
	public String getBb() {
		return bb;
	}
	public void setBb(String bb) {
		this.bb = bb;
	}
	
	@Override
	public int hashCode() {
		
		return aa.hashCode()+bb.hashCode()*17;
	}
	
	@Override
	public boolean equals(Object obj) {
		
		       if (!(obj instanceof Bb))
		           return false;
		       Bb unit = (Bb) obj;
		return unit.getAa().hashCode()==aa.hashCode()&&unit.getBb().hashCode()==bb.hashCode();
	}
}
wx_1021 2016-04-05
  • 打赏
  • 举报
回复
引用 6 楼 a291263379 的回复:
[quote=引用 5 楼 wx_1021 的回复:] [quote=引用 4 楼 fengspg 的回复:] class bb实现hashcode和equals方法,然后将list转成set,再将set转回去list,就实现了去重
这个方法我用了 没效果啊[/quote] 是可以的哟哥们,我想到的也是这个方法。

package util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class EqualsDemo {
	
	public static void main(String[] args) {
		List<Bb>  list = new ArrayList<Bb>();
		Bb a1 = new Bb("呵呵","呵呵");
		Bb a2 = new Bb("呵呵","呵呵");
		Bb a3 = new Bb("哈哈","哈哈");
		
		list.add(a1);
		list.add(a2);
		list.add(a3);
		Set<Bb> set = new HashSet<Bb>();
		set.addAll(list);
		for(Bb set1:set) {
			System.out.println(set1.getAa()+"---"+set1.getBb());
		}
		
	}

}
class Bb{
	String aa;
	String bb;
	
	public Bb(String aa,String bb){
		this.aa = aa;
		this.bb = bb;
	}
	public String getAa() {
		return aa;
	}
	public void setAa(String aa) {
		this.aa = aa;
	}
	public String getBb() {
		return bb;
	}
	public void setBb(String bb) {
		this.bb = bb;
	}
	
	@Override
	public int hashCode() {
		
		return aa.hashCode()+bb.hashCode()*17;
	}
	
	@Override
	public boolean equals(Object obj) {
		
		       if (!(obj instanceof Bb))
		           return false;
		       Bb unit = (Bb) obj;
		return unit.getAa().hashCode()==aa.hashCode()&&unit.getBb().hashCode()==bb.hashCode();
	}
}
[/quote] 如果在加一列Id 顺序是错乱的,如何在排序呢
Intboy 2016-04-04
  • 打赏
  • 举报
回复
class bb实现hashcode和equals方法,然后将list转成set,再将set转回去list,就实现了去重
wx_1021 2016-04-04
  • 打赏
  • 举报
回复
引用 4 楼 fengspg 的回复:
class bb实现hashcode和equals方法,然后将list转成set,再将set转回去list,就实现了去重
这个方法我用了 没效果啊
tianfang 2016-04-04
  • 打赏
  • 举报
回复
需求不明确 多个方法去重,数据库定义唯一key,sql去重 ,最后才是java层的去重,这个和去重要求(需求)相关
wx_1021 2016-04-03
  • 打赏
  • 举报
回复
需要用程序控制
qingtianrx 2016-04-03
  • 打赏
  • 举报
回复
sql可以去重吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧