300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java list 字段去重复_Java中ArrayList去除重复元素(包括字符串和自定义对象)

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

时间:2023-06-13 18:18:19

相关推荐

java list 字段去重复_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,根据传入的集合(老集合)获取迭代器

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;

}

}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。