当前位置: 移动技术网 > IT编程>开发语言>Java > Java中ArrayList去除重复元素(包括字符串和自定义对象)

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网