国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

List集合多個(gè)復(fù)雜字段判斷去重的案例

2024-07-14 08:43:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

List去重復(fù),我們首先想到的可能是 利用List轉(zhuǎn)Set集合,因?yàn)?code style="margin: 3px auto 0px; padding: 2px 4px; outline: none; font-style: inherit; font-weight: inherit; background: rgb(249, 242, 244); width: 640px; line-height: 1.5; clear: both; font-size: 12px; border: 1px solid rgb(204, 204, 204); color: rgb(199, 37, 78); border-radius: 0px; font-family: Menlo, Monaco, Consolas, "Courier New", monospace;">Set集合不允許重復(fù)。所以達(dá)到這個(gè)目的。 如果集合里面是簡(jiǎn)單對(duì)象,例如IntegerString等等,這種可以使用這樣的方式去重復(fù)。但是如果是復(fù)雜對(duì)象,即我們自己封裝的對(duì)象。用List轉(zhuǎn)Set 卻達(dá)不到去重復(fù)的目的。 所以,回歸根本。 判斷Object對(duì)象是否一樣,我們用的是其equals方法。 所以我們只需要重寫(xiě)equals方法,就可以達(dá)到判斷對(duì)象是否重復(fù)的目的。

話不多說(shuō),上代碼:

package com.test;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.apache.commons.collections.CollectionUtils;public class TestCollection { //去重復(fù)之前集合 private static List<User> list = Arrays.asList(  new User("張三", BigDecimal.valueOf(35.6), 18),  new User("李四", BigDecimal.valueOf(85), 30),  new User("趙六", BigDecimal.valueOf(66.55), 25),  new User("趙六", BigDecimal.valueOf(66.55), 25),  new User("張三", BigDecimal.valueOf(35.6), 18)); public static void main(String[] args) { //排除重復(fù) getNoRepeatList(list);  } /** * 去除List內(nèi)復(fù)雜字段重復(fù)對(duì)象 * @param oldList * @return */ private static List<User> getNoRepeatList(List<User> oldList){ List<User> list = new ArrayList<>(); if(CollectionUtils.isNotEmpty(oldList)){  for (User user : oldList) {  //list去重復(fù),內(nèi)部重寫(xiě)equals  if(!list.contains(user)){   list.add(user);  }  } } //輸出新集合 System.out.println("去除重復(fù)后新集合:"); if(CollectionUtils.isNotEmpty(list)){  for (User user : list) {  System.out.println(user.toString());  } } return list;  }  static class User{ private String userName; //姓名 private BigDecimal score;//分?jǐn)?shù) private Integer age; public String getUserName() {  return userName; } public void setUserName(String userName) {  this.userName = userName; } public BigDecimal getScore() {  return score; } public void setScore(BigDecimal score) {  this.score = score; } public Integer getAge() {  return age; } public void setAge(Integer age) {  this.age = age; } public User(String userName, BigDecimal score, Integer age) {  super();  this.userName = userName;  this.score = score;  this.age = age; } public User() {  // TODO Auto-generated constructor stub } @Override public String toString() {  // TODO Auto-generated method stub  return "姓名:"+ this.userName + ",年齡:" + this.age + ",分?jǐn)?shù):" + this.score; } /**  * 重寫(xiě)equals,用于比較對(duì)象屬性是否包含  */ public boolean equals(Object obj) {      if (obj == null) {        return false;      }      if (this == obj) {        return true;      }      User user = (User) obj;      //多重邏輯處理,去除年齡、姓名相同的記錄     if (this.getAge() .compareTo(user.getAge())==0      && this.getUserName().equals(user.getUserName())      && this.getScore().compareTo(user.getScore())==0) {        return true;      }      return false;    }  }}

執(zhí)行結(jié)果:

去除重復(fù)后新集合:
姓名:張三,年齡:18,分?jǐn)?shù):35.6
姓名:李四,年齡:30,分?jǐn)?shù):85
姓名:趙六,年齡:25,分?jǐn)?shù):66.55

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蓬溪县| 武山县| 大宁县| 和静县| 苏尼特左旗| 垫江县| 清涧县| 六枝特区| 英山县| 连江县| 海宁市| 张家口市| 花垣县| 壤塘县| 乌鲁木齐县| 荔波县| 扎兰屯市| 湖南省| 钟山县| 县级市| 金塔县| 安国市| 温泉县| 开阳县| 泌阳县| 临汾市| 叶城县| 安福县| 嘉兴市| 湖北省| 乌海市| 沾化县| 平凉市| 高清| 临猗县| 洪洞县| 盈江县| 七台河市| 定远县| 七台河市| 高要市|