`
xurichusheng
  • 浏览: 334393 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

将List中的对象中的字段的重复值删除

    博客分类:
  • java
阅读更多

如下面的对象 Subs,如果其属性 startSt 和 endSt 同时有重复的值,则删除其中重复的一个。

 

主要代码:

List<Subs> results = new CopyOnWriteArrayList<Subs>();

for (Object obj : list) {
	if (!results.contains(obj)) {
		results.add((Subs) obj);
	}
}

 

 

注:对象 Subs 中必须要重写 equals 方法。

 

class Subs {

	private String startSt;
	private String endSt;

	public String toString() {

		StringBuilder buf = new StringBuilder();

		buf.append("Subs:[");
		buf.append("startSt=").append(startSt).append(", ");
		buf.append("endSt=").append(endSt);
		buf.append("]");

		return buf.toString();
	}

	public boolean equals(Object obj) {
		if (obj == null) {
			return false;
		}

		if (obj instanceof Subs) {

			Subs other = (Subs) obj;

			if (this.getStartSt().equals(other.getStartSt())
					&& this.getEndSt().equals(other.getEndSt())) {
				return true;
			}
		}

		return false;
	}

	// 省略 setter/getter
}

 

测试(junit4):

 

import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import org.junit.Test;

@Test
public void test() {

	List<Subs> list = new LinkedList<Subs>();

	Subs s1 = new Subs();

	s1.setStartSt("桂林变");
	s1.setEndSt("罗平站");

	list.add(s1);

	Subs s2 = new Subs();

	s2.setStartSt("桂林变");
	s2.setEndSt("挡村变电站");

	list.add(s2);

	Subs s3 = new Subs();

	s3.setStartSt("国安站");
	s3.setEndSt("尖峰站");

	list.add(s3);

	Subs s4 = new Subs();

	s4.setStartSt("迁岗站");
	s4.setEndSt("庙岭站");

	list.add(s4);

	Subs s5 = new Subs();

	s5.setStartSt("迁岗站");
	s5.setEndSt("庙岭站");

	list.add(s5);

	System.out.println("去重前:" + list);

	List<Subs> results = new CopyOnWriteArrayList<Subs>();

	for (Object obj : list) {
		if (!results.contains(obj)) {
			results.add((Subs) obj);
		}
	}

	System.out.println("去重后:" + results);
}

 

重复的数据是:startSt=迁岗站, endSt=庙岭站

 

结果:

去重前:[Subs:[startSt=桂林变, endSt=罗平站], Subs:[startSt=桂林变, endSt=挡村变电站], 
Subs:[startSt=国安站, endSt=尖峰站], Subs:[startSt=迁岗站, endSt=庙岭站], 
Subs:[startSt=迁岗站, endSt=庙岭站]]


去重后:[Subs:[startSt=桂林变, endSt=罗平站], Subs:[startSt=桂林变, endSt=挡村变电站], 
Subs:[startSt=国安站, endSt=尖峰站], Subs:[startSt=迁岗站, endSt=庙岭站]]

 

 

 

 

分享到:
评论

相关推荐

    list去掉重复对象

    一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。

    两个list比较 取不同的对象

    比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法

    Java中对List去重 Stream去重的解决方法

    主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下

    arcgis工具

    如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...

    jdbc操作文档,数据库基本操作文档集合

    delete from 表名 where 要删除的字段名 = 要删除的字段值; 1.加载驱动 Class.ForName(com.mysql.jdbc.Driver); 2.建立连接 /* String url = "jdbc:mysql://localhost:3306/student"; //3306指你当前数据库的...

    Excel VBA实用技巧大全 附书源码

    04072引用工作表中任意对象左上角、右下角的单元格 04073引用输入了数组公式的所有单元格区域 04074引用输入了某数组公式的单元格区域 04075引用输入了某个函数的全部单元格 04076引用含有特定文本字符串的所有...

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

    Delphi开发技巧之-VCL

    删除stringlist中重复项目 删除TStringGrid中的列 动画窗体 取ComboBox List句柄 取TListview内所有选定项目 取TShellListView中选定文件的路径 取列举值的名称 在combobox中实现autocomplete 在DBGrid中使用回车键...

    Java面试宝典2010版

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。...

    Oracle9i的init.ora参数中文说明

    如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。 值范围: C 编译程序的完整路径。 默认值: 无 remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    Python Cookbook

    5.4 根据对应值将键或索引排序 189 5.5 根据内嵌的数字将字符串排序 192 5.6 以随机顺序处理列表的元素 193 5.7 在增加元素时保持序列的顺序 195 5.8 获取序列中最小的几个元素 197 5.9 在排序完毕的序列中寻找...

    Android代码-设计网站Dribbble安卓客户端

    数据库逻辑:针对分页的数据,增加字段page(表示页面id),删除和查询都通过where page = pageId; 2017.6.4 增加TypeConverter:数据库不支持的类型转化为json字符串; 增加list adapter: ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和数据链路层 08 网络层和arp协议 09 传输层和应用...

    ArrayList:ArrayList 就像在 C 中一样

    ArrayList,C 语言中的高级链表库用在entry.h定义 ... 您可以添加任意数量的字段,只要您保留包含指向列表中上一个和下一个对象的指针的entries字段,即可在列表中添加、移动、删除、排序。 id用于对列表进行索引,

    乐优商城.xmind

    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。 select * from tb_category where id in (select ...

    vb学生成绩管理系统

    (3) 通过“工程—工程1属性”菜单,将主窗体(frmMain)MDIform1设置为启动对象。 添加标准模块代码: '声明全局对象变量ABOcn,用于创建于数据库的连接 Public ADOcn As New ADODB.Connection 添加主窗体初始化过程...

Global site tag (gtag.js) - Google Analytics