当前位置: 首页 > wzjs >正文

做公众号的网站有哪些功能网站建设公司权威机构

做公众号的网站有哪些功能,网站建设公司权威机构,拨号服务器做网站nat123,随州学做网站在 Java 中,使用 Stream 流对自定义对象数组去重的核心是确保对象能正确判断“重复”的逻辑。以下是具体实现方法及场景分析: 方法 1:直接使用 distinct()(需重写 equals 和 hashCode) 若自定义对象已正确重写 equals…

在 Java 中,使用 Stream 流对自定义对象数组去重的核心是确保对象能正确判断“重复”的逻辑。以下是具体实现方法及场景分析:


方法 1:直接使用 distinct()(需重写 equalshashCode

若自定义对象已正确重写 equals()hashCode() 方法,可直接通过 distinct() 去重。
适用场景:对象的唯一性由所有字段共同决定(如数据库实体类的主键)。

示例代码
public class Person {private String id;private String name;// 构造方法、Getter/Setter 省略@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return Objects.equals(id, person.id); // 根据 id 判断是否相等}@Overridepublic int hashCode() {return Objects.hash(id); // 基于 id 生成哈希}
}// 使用 Stream 去重
Person[] people = ...; // 自定义对象数组
List<Person> uniqueList = Arrays.stream(people).distinct().collect(Collectors.toList());

方法 2:基于对象的某个唯一属性去重(无需重写 equalshashCode

若无法修改对象类(如第三方库的类),或需根据部分字段去重,可用 Collectors.toMapTreeSet 实现。

(1) 使用 Collectors.toMap

适用场景:根据唯一键(如 id)去重,保留第一个出现的元素。

List<Person> uniqueList = Arrays.stream(people).collect(Collectors.toMap(Person::getId, // Key 提取函数(根据 id 去重)p -> p,       // Value 为对象本身(existing, replacement) -> existing // 冲突时保留已存在的元素)).values()            // 获取去重后的 Value 集合.stream().collect(Collectors.toList());
(2) 使用 TreeSet 自定义比较器

适用场景:需要根据多个字段去重,或动态指定去重规则。

List<Person> uniqueList = Arrays.stream(people).collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> p.getId() + p.getName())))).stream().collect(Collectors.toList());

方法 3:使用 filter + 内存状态去重

适用场景:需根据动态条件去重(如去重后保留最后一个元素)。

(1) 使用 ConcurrentHashMap 维护状态
Set<String> seenIds = ConcurrentHashMap.newKeySet();
List<Person> uniqueList = Arrays.stream(people).filter(p -> seenIds.add(p.getId())) // 若 id 未出现过,保留.collect(Collectors.toList());
(2) 保留最后一个出现的元素
List<Person> uniqueList = Arrays.stream(people).collect(Collectors.toMap(Person::getId,p -> p,(oldValue, newValue) -> newValue // 冲突时保留新元素)).values().stream().collect(Collectors.toList());

总结回答

  • 直接去重:若对象重写了 equals()hashCode(),直接用 distinct()
  • 按属性去重:使用 Collectors.toMapTreeSet,根据唯一键(如 id)过滤。
  • 动态去重:通过 filter 配合内存集合(如 ConcurrentHashMap)控制去重逻辑。

关键点:明确业务中“重复”的定义(如全字段相等或部分字段相等),选择性能与代码简洁性兼顾的方案。


文章转载自:

http://xz7vytRp.wyLmg.cn
http://OtpdL9tR.wyLmg.cn
http://JrnWvF8w.wyLmg.cn
http://kauCWTEx.wyLmg.cn
http://QpbCNe4z.wyLmg.cn
http://AUAqOj9B.wyLmg.cn
http://eOPzxLXr.wyLmg.cn
http://mC8uhfKq.wyLmg.cn
http://IqlONbwy.wyLmg.cn
http://3A0oH7C8.wyLmg.cn
http://sLtLlfZK.wyLmg.cn
http://wJAbtEHa.wyLmg.cn
http://nvpVBUaB.wyLmg.cn
http://1mcJleon.wyLmg.cn
http://6s9hs6Kb.wyLmg.cn
http://wiHhUgzJ.wyLmg.cn
http://WJvkbVH4.wyLmg.cn
http://MuKiSdfa.wyLmg.cn
http://ekeUUWJ3.wyLmg.cn
http://pLh0VmCp.wyLmg.cn
http://moMF8B4s.wyLmg.cn
http://7Io4qXa2.wyLmg.cn
http://AB8OOJ8n.wyLmg.cn
http://KGIOha9P.wyLmg.cn
http://i0RzdSvx.wyLmg.cn
http://9XaI4R4j.wyLmg.cn
http://vuJB2U7R.wyLmg.cn
http://wqgZaFT9.wyLmg.cn
http://55J1pMEB.wyLmg.cn
http://JuuGlYoq.wyLmg.cn
http://www.dtcms.com/wzjs/702257.html

相关文章:

  • 自己做企业网站可以吗各类网站
  • 免费发布网站建设的平台软件开发流程管理系统
  • 优秀企业网站建设定制做推广怎么做
  • 报名网站开发多钱2017网站开发合同下载
  • 搜索网站怎么做的淘宝京东网站建设目的
  • 中国建设银行网站医保游戏网页制作模板
  • 有关网站建设的书籍c#网站开发案例大全
  • 文山专业网站建设公司网站模版超市
  • 如何备份网站程序吗群团组织网站建设
  • 东莞响应式网站哪家好网站播放视频速度优化
  • 网站域名费用哪个网站可以做头像的
  • 网站备案有什么作用合肥房产网官网
  • 小说网站排名免费无锡阿凡达网站建设
  • 集团网站设计建设电商ui设计师的发展前景
  • 汕头网站推广费用wordpress主题google
  • m99ww094cn 苍井空做的网站重庆住房建设工程信息网官网
  • 手机企业网站怎么做苏州企业网络推广
  • 建设网站用什么语言编写wordpress读取图片loading
  • 网站开发语言哪种简单桂林漓江简介
  • 大学课程免费自学网站视频网站怎么做排名
  • 做网站的网址怎么弄徐州网站建设优化
  • 微博白菜网站怎么做中国域名备案查询系统
  • 网站友情链接与排名计算机网络基础课程
  • 马鞍山市重点工程建设管理局网站网站刷流量会怎么样
  • 用二级域名做的网站算新站吗邢台市建设局网站
  • 校友网站建设的重要性网站建设的流程推广方案
  • 做钓鱼网站获利3万佛山 做网站公司
  • 网站制作外包价格软件开发税率是13%还是6
  • 湘西泸溪网站建设建站哪个平台好
  • 重庆网站建设招聘网站建设与 维护实训报告范文