欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-04 12:56:59
1.去除重复字符串 package com.online.msym; import java.util.arraylist; import java.util...

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

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