Java中ArrayList去除重复元素(包括字符串和自定义对象)

发布时间 - 2026-01-11 00:06:30    点击率:

1.去除重复字符串

package com.online.msym;
import java.util.ArrayList;
import java.util.Iterator;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo1_ArrayList {  
  public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("a");
    list.add("a");
    list.add("b");
    list.add("b");
    list.add("c");
    list.add("c");
    list.add("c");
    list.add("c");
    ArrayList newList = getSingle(list);
    System.out.println(newList);
  }
  /*
   * 创建新集合将重复元素去掉
   * 1,明确返回值类型,返回ArrayList
   * 2,明确参数列表ArrayList
   * 
   * 分析:
   * 1,创建新集合
   * 2,根据传入的集合(老集合)获取迭代器
   * 3,遍历老集合
   * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加
   */
  public static ArrayList getSingle(ArrayList list) {
    ArrayList tempList = new ArrayList();          //1,创建新集合
    Iterator it = list.iterator();              //2,根据传入的集合(老集合)获取迭代器
    while(it.hasNext()) {                  //3,遍历老集合
      Object obj = it.next();                //记录住每一个元素
      if(!tempList.contains(obj)) {            //如果新集合中不包含老集合中的元素
        tempList.add(obj);                //将该元素添加
      }
    }  
    return tempList;
  }
}

2.去除ArrayList中重复自定义对象元素

注意事项:必须重写equals()方法的,因为contains方法和remove方法底层都依赖于equals方法

package com.online.msym;
import java.util.ArrayList;
import java.util.Iterator;
import online.msym.bean.Person;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo2_ArrayList {
  /**
   * * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同,即同姓名同年龄)
     :注意事项: 重写equals()方法的
    contains方法判断是否包含,底层依赖的是equals方法
    remove方法判断是否删除,底层依赖的是equals方法
   */
  public static void main(String[] args) {
    ArrayList list = new ArrayList();        //创建集合对象
     list.add(new Person("张三", 23));
    list.add(new Person("张三", 23));
    list.add(new Person("李四", 24));
    list.add(new Person("李四", 24));
    list.add(new Person("李四", 24));
    list.add(new Person("李四", 24));
    //ArrayList newList = getSingle(list);      //调用方法去除重复
    //System.out.println(newList);
    list.remove(new Person("张三", 23));
    System.out.println(list);
  }
  /*
   * 创建新集合将重复元素去掉
   * 1,明确返回值类型,返回ArrayList
   * 2,明确参数列表ArrayList
   * 
   * 分析:
   * 1,创建新集合
   * 2,根据传入的集合(老集合)获取迭代器
   * 3,遍历老集合
   * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加
   */
  public static ArrayList getSingle(ArrayList list) {
    ArrayList tempList = new ArrayList<>();          //1,创建新集合
    Iterator it = list.iterator();              //2,根据传入的集合(老集合)获取迭代器
    while(it.hasNext()) {                  //3,遍历老集合
      Object obj = it.next();                //记录住每一个元素
      if(!tempList.contains(obj)) {            //如果新集合中不包含老集合中的元素
        tempList.add(obj);                //将该元素添加
      }
    }
    return tempList;
  }
}

Person实体类:

package online.msym.bean;
public class Person {
  private String name;
  private int age;
  public Person() {
    super();
  }
  public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
  }
  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;
  }
  @Override
  public String toString() {
    return "Person [name=" + name + ", age=" + age + "]";
  }
  //重写equals方法,用于判断连个Person对象是否相同
  @Override
  public boolean equals(Object obj) {
    Person p = (Person)obj;
    System.out.println("equals 方法被调用了,证明contains方法底层调用的是equals");
    return this.name.equals(p.name) && this.age == p.age;
  }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# java  # arraylist去重复  # arraylist去除重复  # java对ArrayList中元素进行排序的几种方式总结  # Java ArrayList实现删除指定位置的元素  # Java集合删除元素ArrayList实例详解  # java集合类arraylist循环中删除特定元素的方法  # 2种Java删除ArrayList中的重复元素的方法  # Java 8 对 ArrayList 元素进行排序的操作方法  # 遍历  # 的是  # 重写  # 判断是否  # 李四  # 迭代  # 就不  # 自定义  # 将该  # 中不  # 不包含  # 返回值  # 连个  # 同年龄  # 变量值  # 依赖于  # 实体类  # Demo1_ArrayList  # println  # String 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何在IIS7上新建站点并设置安全权限?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  装修招标网站设计制作流程,装修招标流程?  打造顶配客厅影院,这份100寸电视推荐名单请查收  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel用户密码怎么加密_Laravel Hash门面使用教程  JavaScript中的标签模板是什么_它如何扩展字符串功能  利用JavaScript实现拖拽改变元素大小  高防服务器如何保障网站安全无虞?  利用vue写todolist单页应用  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel如何实现多对多模型关联?(Eloquent教程)  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Swift中循环语句中的转移语句 break 和 continue  详解jQuery中的事件  昵图网官方站入口 昵图网素材图库官网入口  无锡营销型网站制作公司,无锡网选车牌流程?  Android实现代码画虚线边框背景效果  Laravel如何升级到最新版本?(升级指南和步骤)  如何在新浪SAE免费搭建个人博客?  MySQL查询结果复制到新表的方法(更新、插入)  郑州企业网站制作公司,郑州招聘网站有哪些?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  javascript基本数据类型及类型检测常用方法小结  如何快速启动建站代理加盟业务?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  详解Android图表 MPAndroidChart折线图  Python函数文档自动校验_规范解析【教程】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  七夕网站制作视频,七夕大促活动怎么报名?  *服务器网站为何频现安全漏洞?  如何在局域网内绑定自建网站域名?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  焦点电影公司作品,电影焦点结局是什么?  java获取注册ip实例  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?