栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/147295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号