`
xurichusheng
  • 浏览: 344733 次
  • 性别: 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`并提取出不同的对象。 #### 核心知识点解析 1. **列表(List)的基础操作**: - `List`是一种常用的数据结构,在Java中,`List`接口是`Collection`框架...

    List对象去重和按照某个字段排序的实现方法

    在上面的代码中,我们首先创建了一个List对象,添加了五个People对象,然后使用HashSet删除了重复元素。结果显示,重复元素被删除成功。 接下来,让我们来看一下List对象的按照某个字段排序。List对象的排序可以...

    C#查找列表中所有重复出现元素的方法

    本篇文章将深入探讨如何在C#中查找列表中的所有重复元素,并提供一个具体的实现示例。 首先,我们需要了解C#中的列表类型`List&lt;T&gt;`。`List&lt;T&gt;`是.NET框架提供的一个泛型类,它实现了`IList&lt;T&gt;`、`ICollection&lt;T&gt;`和...

    两个集合比较(新增、编辑、删除)

    本文将深入探讨如何比较两个集合,并关注在Java中使用List进行对比时的“新增”、“编辑”和“删除”操作。首先,我们需要理解集合的基本概念。集合是存储一组元素的数据结构,而List是一种有序的集合,允许重复元素...

    Android List删除重复数据

    在本文中,我们将介绍四种不同的方法来删除 Android List 中的重复数据。 方法一:通过循环进行删除 该方法使用双重循环来删除重复数据。外层循环遍历列表,内层循环从后向前遍历列表,比较每个元素是否相等,如果...

    arcgis工具

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

    Python实现嵌套列表及字典并按某一元素去重复功能示例

    这个类的主要功能是合并资源列表并消除重复项,这里的重复是基于字典中的`'host'`键的值。 `MergeHost`方法通过创建一个新的空列表`allResource`来开始。然后,它将`resource_list`的第一个元素添加到`allResource`...

    Java中对List集合的常用操作详解

    在Java编程中,List集合是Java集合框架的重要组成部分,它是一种有序的集合,可以存储重复的元素。本文将深入解析Java中对List集合的常用操作,帮助开发者更好地理解和使用List接口。 1. **添加、获取和删除元素** ...

    Java List集合的应用.rar

    Java List集合是Java编程语言中一个非常重要的数据结构,它属于集合框架的一部分,主要用于存储一组有序的、可重复的对象。List接口提供了许多方法,使得在处理列表数据时具有很高的灵活性和效率。在这个“Java List...

    删除DataTable重复列,只删除其中的一列重复行的解决方法

    为了解决这个问题,描述中给出了一段自定义的代码,它创建了一个名为`DeleteSameRow`的静态方法,接收一个DataTable对象和一个字段名作为参数,用于删除指定列的重复行。下面是这个方法的详细解释: ```csharp ...

    一种面向对象的Java Bean查询方法的实现 (1).pdf

    - `deleteMany(List beanList)`: 批量删除beanList中所有bean对象在数据库表中对应的行。 - `update(Object beanInstance)`: 更新beanInstance中的数据到对应的数据库表记录。 - `updateMany(List beanList)`: 批量...

    Struts 1.x中批量封装对象

    4. **提交与处理**:当用户提交表单时,Struts会自动将所有输入字段的数据绑定到ActionForm中的集合对象上。在Action类中,你可以通过`ActionForm`的getter方法获取到这个集合,并进行业务处理。 5. **数据库操作**...

    一段代码搞懂关于Java中List、Set集合及Map的使用

    在Java编程语言中,集合框架是处理对象的重要工具,其中包括List、Set和Map三大核心接口。这三种接口分别提供了不同的数据存储和管理方式,适用于不同的场景需求。 List接口表示一个有序的列表,允许元素重复。它的...

    java中list、set和map 的区别

    这意味着即使两个对象的字段相同,但如果它们不是同一个对象实例,则会被认为是不同的键。 ### 总结 在选择使用`List`、`Set`还是`Map`时,需要根据具体的应用场景和需求来决定。如果需要维护元素的顺序或允许重复...

    redis的list,set,hash,sorted set,skiplist 1

    Redis 提供了 `HSET` 用于设置键值对,`HGET` 获取单个值,`HGETALL` 获取所有键值对,`HDEL` 删除指定字段,以及 `HINCRBY` 对数值字段进行增量操作。哈希表在存储用户信息、配置参数等场景中非常实用。 4. **有序...

    一种面向对象的Java Bean查询方法的实现

    - **`deleteMany(List beanList)`**:批量删除`beanList`中Java Bean对象在数据库表中的对应行。 - **`update(Object beanInstance)`**:更新数据库表中与`beanInstance`对应的记录。 - **`updateMany(List beanList...

    Repeater 绑定 List 数据源

    1. 创建List对象:首先,你需要创建一个`List&lt;T&gt;`实例并填充数据。例如,如果你有一个`Student`类,你可以创建一个`List&lt;Student&gt;`对象,并添加多个`Student`实例。 ```csharp public class Student { public ...

    Java EE 查询 将数据库中对应的表逐行转换成DAO实体类。List方式返回。自动赋值时忽略大小写的名称进行匹配,自动赋值到指定的实体类中。

    首先,DAO实体类是Java编程中表示数据库表结构的对象,它通常包含对应于数据库表字段的属性,并且提供一些基本的CRUD(创建、读取、更新、删除)操作方法。例如,如果你有一个名为`User`的数据库表,那么对应的DAO...

Global site tag (gtag.js) - Google Analytics