源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

利用Java Set 去除重复object的方法

  • 时间:2022-04-10 23:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:利用Java Set 去除重复object的方法
[b]实例如下:[/b]
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 编写者:CP
 * <br />类描述:set集合针对String 类型和8大基础数据类型 过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals 比较相等时,则会去比较hashCode值 hashCode的值 如果一致的话,则不会存进set
 */
public class SetDemo {
 
 public static void main(String[] args) {
  Set<String> nameSet = new HashSet<String>();
  nameSet.add("张三");
  nameSet.add("李四");
  nameSet.add("王五");
  nameSet.add("张三");
  
  // 输出结果 张三 李四 王五
  for(String name : nameSet){
   System.out.print(name + "\t");
  }
  // List集合去除重复基础数据
  List<String> nameList = new ArrayList<String>();
  nameList.add("张三");
  nameList.add("李四");
  nameList.add("王五");
  nameList.add("赵六");
  nameSet.addAll(nameList);
  
  // 输出结果 张三 李四 王五 赵六
  for(String name : nameSet){
   System.out.print(name + "\t");
  }
  
  // 去除编号和用户名一样的 对象,需要重写 equals 方法 和 hashCode方法
  User admin = new User(1, "admin");
  User user = new User(2, "user");
  User user1 = new User(2, "user");
  User admin1 = new User(3, "admin");
  
  
  Set<User> userSet = new HashSet<User>();
  userSet.add(admin);
  userSet.add(user);
  userSet.add(admin1);
  userSet.add(user1);
  // 输入结果 admin1 admin3 user2
  for(User u : userSet){
   System.out.print(u.username + u.id + "\t");
  }
  
  System.out.println(user.equals(null));
 }
}

class User{
 
 protected Integer id;
 
 protected String username;
 
 public User(Integer id, String username){
  this.id = id;
  this.username = username;
 }


 /**
  * 如果对象类型是User 的话 则返回true 去比较hashCode值
  */
 @Override
 public boolean equals(Object obj) {
  if(obj == null) return false;
  if(this == obj) return true;
  if(obj instanceof User){ 
   User user =(User)obj;
//   if(user.id = this.id) return true; // 只比较id
   // 比较id和username 一致时才返回true 之后再去比较 hashCode
   if(user.id == this.id && user.username.equals(this.username)) return true;
   }
  return false;
 }



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

 
}
以上这篇利用Java Set 去除重复object的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部