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;

}

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值