首页 > 开发 > Java > 正文

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

2024-07-13 10:05:22
字体:
来源:转载
供稿:网友

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;  }}

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表