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

网友投稿 304 2023-06-03


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

}

/*

* 创建新集合将重复元素去掉

* 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,根据传入的集合(老集合)获http://取迭代器

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;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Windows下Java环境变量配置详解
下一篇:微信小程序 弹框和模态框实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~