精华内容
下载资源
问答
  • set去除重复对象

    2017-07-04 15:39:28
    package setproject; public class Person { private String userName; private String password; private String address; public String getUserName() {  return userName; } public void setUserName
    package setproject;
    
    public class Person {
    private String userName;
    private String password;
    private String address;

    public Person(){}
    public Person(String userName,String password,String address){
        this.userName=userName;
        this.password=password;
        this.address=address;
    }

    @Override  
    public boolean equals(Object obj) {  
        if(obj == null) return false;  
        if(this == obj) return true;  
        if(obj instanceof Person){   
            Person message =(Person)obj;
            // 比较userName,password,address 一致时才返回true,之后再去比较 hashCode  
            if(message.userName == this.userName
               && message.password.equals(this.password)
               &&message.address.equals(this.address)) return true;  
            }  
              return false;  
     }  

    @Override  
    public int hashCode() {  
    //重写hashcode 方法,返回的hashCode 不一样才认定为不同的对象
    //return id.hashCode(); // 只比较id,id一样就不添加进集合  
        return userName.hashCode() * password.hashCode()*address.hashCode();  
       }

    }


    测试用例如下:


    public class SetDemo {
        @Test
        public void testDemo(){
            Set<Person> setPerson=new HashSet<Person>();
            setPerson.add(new Person("李白","123","济南"));
            setPerson.add(new Person("李清照","456","山海关"));
            setPerson.add(new Person("李商隐","123","嘉峪关"));
            setPerson.add(new Person("李白","123","济南"));
            setPerson.add(new Person("李白","456","济南"));
            for(Iterator<Person> iter=setPerson.iterator();iter.hasNext();){
                Person person =iter.next();
                System.out.println("username:"+person.getUserName()+",password:"+person.getPassword()+",address:"+person.getAddress());
            }
        }
    }


    输出的值如下:

    "李白","123","济南"

    "李清照","456","山海关"

    "李商隐","123","嘉峪关"

    "李白","456","济南"



    展开全文
  • Set集合是针对String和8大基础数据类型过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals比较相等时,则会去比较hashCode的值 如果一致的话,则不会存进set容器. 去重方法: ...

    Set集合是针对String和8大基础数据类型过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals比较相等时,则会去比较hashCode的值 如果一致的话,则不会存进set容器.

     

    去重方法:

     

    在实体类中,重写重写hashCode方法和equals方法

    public class 类名 implements Serializable {
    
       private String id;
       private String name;
       
        // set对象重复禁止添加,重写顶级方法
        @Override
        public boolean equals(Object obj) {
            if(obj == null) {
                return false;
            }
            if(this == obj) {
                return true;
            }
            if(obj instanceof 类名){
                类名 xx =(类名)obj;
                // 对象比较一个字段时
                //if(xx.id.equals(this.id)){
                //    return true;
                //}
                对象比较多个字段时, 用&& 隔开
                if(xx.id.equals(this.id) && xx.name.equals(this.name)){
                    return true;
                }
            }
            return false;
        }
    
        @Override
        public int hashCode() {
             // 一个参数时
            // return id.hashCode();
            // 多个参数时
            return id.hashCode() * name.hashCode();
        }
        
        set,get方法...
    
    }

     

    展开全文
  • 下面小编就为大家带来一篇利用Java Set 去除重复object的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 对象数组去重的思路是将对象序列化为字符串,然后使用set结构去重,最后再反序列化为对象。 const arr = [ { name: 'haha', age: 12 }, { name: 'haha', age: 12 }, { name: 'haha', age: 12 } ]; // ...

    对象数组去重的思路是将对象序列化为字符串,然后使用set结构去重,最后再反序列化为对象

    const arr = [
       {
         name: 'haha',
         age: 12
       },
       {
         name: 'haha',
         age: 12
       },
       {
         name: 'haha',
         age: 12
       }
     ];
     // 序列化去重
     const noRepeat = [...new Set(arr.map(item => JSON.stringify(item)))];
     // 反序列化
     const newArr = noRepeat.map(item => JSON.parse(item));
     console.log(newArr);   // [ { name: 'haha', age: 12 } ]
    
    展开全文
  • Set集合中去除重复插入的对象 1.先创建一个Student类,并在Student类中添加有参构造、无参构造和get、set方法。 重要:在Student类中重写hashCode和equals方法(必须) package lesson1; public class Student { int...

    Set集合中去除重复插入的对象

    1.先创建一个Student类,并在Student类中添加有参构造、无参构造和get、set方法。
    重要:在Student类中重写hashCode和equals方法(必须)

    package lesson1;
    
    public class Student {
    	int sno;
    	String name;
    	int age;
    	double score;
    	public int getSno() {
    		return sno;
    	}
    	public void setSno(int sno) {
    		this.sno = sno;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public double getScore() {
    		return score;
    	}
    	public void setScore(double score) {
    		this.score = score;
    	}
    	public Student() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	public Student(int sno, String name, int age, double score) {
    		super();
    		this.sno = sno;
    		this.name = name;
    		this.age = age;
    		this.score = score;
    	}
    	
    	/**
    	 * 重写hashCode()方法,如果sno(学号)相同
    	 * 则返回相同的hashCode值
    	 */
    	@Override
    	public int hashCode() {
    		Integer ino = sno;
    		return ino.hashCode();
    	}
    	/**
    	 * 重写equals方法,如果有相同的sno(学号)
    	 * 则返回true
    	 */
    	@Override
    	public boolean equals(Object obj) {
    		Student stu = (Student) obj;
    		return this.getSno() == stu.getSno();
    	}
    
    }
    
    

    2.创建一个测试类SetTest,进行测试。

    package lesson1;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class SetTest {
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//通过student类的有参构造创造四个student对象
    		Student s1 = new Student(100 , "zhang3" , 20 , 99);
    		Student s2 = new Student(100 , "zhang3" , 20 , 99);
    		Student s3 = new Student(101 , "li4" , 22 , 90);
    		Student s4 = new Student(102 , "wang5" , 24 , 79);
    		Student s5 = new Student(101 , "li4" , 22 , 90);
    		
    		//创建一个Set集合
    		Set<Student> stu_set = new HashSet<Student>();
    		
    		//将四个student对象添加到集合中
    		//在调用add方法的时候会自动调用Student类中重写的
    		//hashCode方法和equals方法,如果添加时
    		//hashCode值相同且equals方法返回为true则不添加该对象
    		stu_set.add(s1);
    		stu_set.add(s2);
    		stu_set.add(s3);
    		stu_set.add(s4);
    		stu_set.add(s5);
    		
    		//通过增强for循环输出集合中的对象
    		for (Student s:stu_set) {
    			System.out.println("学号:" + s.getSno() + " 姓名:" + s.getName() 
    			+ " 年龄:" + s.getAge() + " 成绩:" + s.getScore() );
    		}
    	
    	}
    
    }
    
    
    

    测试结果:
    在这里插入图片描述
    由上面的结果可以发现,插入的对象数据有两条是重复的,Set集合在使用添加方法add的时候把重复的对象给去掉了。

    展开全文
  • List集合去除重复对象

    2016-03-02 19:14:48
    对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。  当set集合存储的是对象类型时,需要在对象的实体类里面重写public...
  • 下面小编就为大家带来一篇list集合去除重复对象的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set;... * 类描述:set集合针对String 类型和8大基础数据类型 过滤掉重复数据,如果存放的是其他类型对象
  • 文章来源:...Set里的元素是不能重复的,那么用iterator()方法来区分重复与否 public static boolean isSetEqual(Set set1, Set set2) { if (set1 == null && set2 == null) { retu
  • list集合去除重复对象

    2019-10-04 20:22:04
    对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。 当set集合存储的是对象类型时,需要在对象的实体类里面重写public ...
  • java厚积薄发之set去除重复object

    千次阅读 2016-12-01 17:10:17
    public class SetDemo { public static void main(String[] args) { Set nameSet = new HashSet(); nameSet.add("张三"); nameSet.add("李四"); nameSet.add("王五"); nameS
  • List中去除重复对象

    2020-11-05 16:01:28
    如果集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素。 如下所示: public class Test{ public static void main(String[] args){ List list = new ArrayList(); list....
  • list集合去除重复对象

    2016-11-21 13:57:30
    对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。  当set集合存储的是对象类型时,需要在对象的实体类里面重写public ...
  • 方式一 定义新对象,循环集合过滤不通数据,添加到新对象的方式: package test; import ...import java.util.ArrayList;... * 两个集合,去除重复对象,留下新对象 */ public class Test2 { ...
  • 在java中,要将一个集合中重复对象除去,如果这个集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素,大家都知道set集合的特点就是没有重复的,这个就相对比较简单,这里不...
  • List ADD时去除重复对象代码

    千次阅读 2012-01-29 11:56:16
    我们都知道 Set:实现Set接口的类里面的内容是没有顺序,并且不能重复;...所以我们这里面要去除重复对象,那么就要用到set类。 在set的时候其实是很简单的: List products ; Set set=new HashSet
  • Set集合去除重复元素

    2013-10-19 14:38:39
    import java.util.ArrayList; import java.util.HashSet; import java.util.List;... * 类描述:set集合针对String 类型和8大基础数据类型 过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方
  • NSSet 与 NSArray 区别,数组有下别, set 没有,数组是有序的, set 无序,数组可以重复存储对象, set 不能重复存储对象
  • java中set集合如何去除重复元素

    千次阅读 2017-07-25 19:12:11
    set集合是可以重复的元素集合; 用set集合添加一个学生对象元素时:import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set;public class ...
  • c++中容器set去除重复元素排序

    千次阅读 2018-08-22 15:28:05
     c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。 1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 310,484
精华内容 124,193
关键字:

set去除重复对象