对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。
当set集合存储的是对象类型时,需要在对象的实体类里面重写public boolean equals(Object obj) {} 和 public int hashCode() {} 两个方法。
实体类
- public class Student {
- public String id;
- public String name;
- public Student() {
- }
- public Student(String id,String name) {
- this.id = id;
- this.name = name;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public boolean equals(Object obj) {
- Student s=(Student)obj;
- return id.equals(s.id) && name.equals(s.name);
- }
- @Override
- public int hashCode() {
- String in = id + name;
- return in.hashCode();
- }
- }
public class Student { public String id; public String name; public Student() { } public Student(String id,String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { Student s=(Student)obj; return id.equals(s.id) && name.equals(s.name); } @Override public int hashCode() { String in = id + name; return in.hashCode(); } }
测试类
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- public class QuSame {
- public static void main(String[] args) {
- List<Student> stu = new ArrayList<Student>();
- stu.add(new Student("1","yi"));
- stu.add(new Student("3","san"));
- stu.add(new Student("3","san"));
- stu.add(new Student("2","er"));
- stu.add(new Student("2","er"));
- //set集合保存的是引用不同地址的对象
- Set<Student> ts = new HashSet<Student>();
- ts.addAll(stu);
- for (Student student : ts) {
- System.out.println(student.getId()+"-"+student.getName());
- }
- }
- }
相关推荐
这里我们将详细讨论如何在`List`集合中去除重复对象的实现,特别是针对对象类型的集合。 首先,我们要明确一点:在Java中,当我们说两个对象是重复的,通常是指它们的属性值相等,而不是指它们在内存中的引用地址...
一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。
在编程领域,尤其是在Java开发中,我们经常遇到需要处理数据集合,例如列表(List),去除其中的重复元素。"去掉list中的重复对象"这个话题是一个常见的需求,特别是在处理业务数据时,确保数据的唯一性至关重要。这...
2. **比较与去除重复项**: - 使用双重循环来逐个比较两个列表中的元素。 - 如果发现两个列表中有相同的`Student`对象,则从第一个列表中移除该对象。 - 移除后需要更新循环变量,以避免遗漏元素。 3. **使用`...
【Java中List集合对象去重及按属性去重的8种方法】 在Java编程中,当我们处理包含重复元素的List时,有时需要去除其中的重复项。以下文章将详细介绍8种针对List集合对象去重的方法,包括基于对象整体以及按特定属性...
HashSet 是一种不允许重复元素的集合,因此可以用来删除重复数据。首先将列表转换为 HashSet,然后将 HashSet 转换回列表。这种方法的时间复杂度为 O(n),因此适合大型列表。 ```java public static void remove...
HashSet是一个不允许重复元素的集合,添加元素时,会自动忽略重复元素。 ```java List<Student> list = new ArrayList(); // 添加元素到list Set<Student> set = new HashSet(list); list.clear(); list.addAll(set...
List集合多个复杂字段判断去重的案例 在 Java 编程中,List 集合是我们常用的数据结构之一。当我们需要对 List 集合进行去重操作时,通常的做法是将其转换为 Set 集合,因为 Set 集合不允许重复元素。但是,事情并...
在IT领域,集合比较是一...通过理解并熟练运用这些方法,我们可以有效地比较和操作两个List集合,无论是查找新增、编辑还是删除的元素。在实际项目中,这种能力对于数据同步、日志分析、版本控制等多个场景都至关重要。
Set接口下的集合类如HashSet不存储重复元素,可以方便地去除列表中的重复项。将List转换为Set,然后再转换回List即可: ```java List<PenBean> uniquePenBeanList = new ArrayList(new HashSet(penBeanList)); ``` ...
Java List集合是Java编程语言中一个非常重要的数据结构,它属于集合框架的一部分,主要用于存储一组有序的、可重复的对象。List接口提供了许多方法,使得在处理列表数据时具有很高的灵活性和效率。在这个“Java List...
方法内部创建了一个新的`List<T>`对象`duplicates`来存储找到的重复元素。然后,通过一个for循环遍历列表,使用索引`i`访问当前元素。如果当前元素`this[i]`等于`inputValue`,就将其添加到`duplicates`列表中。最后...
本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...
将List转换为Set,可以自动去除重复项。例如: ```python my_list = [1, 2, 3, 2, 4, 3] my_set = set(my_list) ``` 在这个例子中,`my_set`将只包含`{1, 2, 3, 4}`,因为重复的2和3已被移除。 如果我们仍然需要...
Java中ArrayList去除重复元素(包括字符串和自定义对象) 在Java中,ArrayList是一种常用的集合类,但是在实际应用中,我们经常会遇到重复元素的问题,例如字符串或自定义对象的重复元素。在本文中,我们将介绍如何...
在实际开发中,我们经常需要从集合中去除重复元素,以保证数据的唯一性和正确性。今天,我们来分享一个Java集合去重示例,帮助大家更好地理解和应用这个概念。 Java集合去重示例的需求背景 -----------------------...
List集合是其中的一个重要接口,它代表了一个有序的、允许元素重复的序列。List接口扩展了Collection接口,提供了更丰富的操作方法,使得在处理序列数据时更加灵活。 1. **集合概念** - 集合是Java API提供的类,...
- 如果需要高效地检查重复,可以考虑使用哈希表(Dictionary对象)或集合(Collection对象),这两种数据结构在VB6.0中提供了快速的成员查找。 3. **VB6.0源代码分析**: - 源代码可能包含一个事件处理程序,如...
2. **List接口**:List接口是一个有序的集合,允许包含重复元素。在实验中,我们使用了ArrayList和LinkedList这两个实现类。ArrayList基于动态数组,随机访问速度快,但在插入和删除元素时,特别是中间位置,效率较...
"javalist.zip_list集合 java"这个标题暗示我们将探讨Java中的List集合以及它的应用。描述中提到“java中集合list的应用非常重要”,这确实不假,因为List在处理有序数据时具有广泛的应用场景。 List接口位于java....