判断list 集合中元素是否相同,依据的是元素的equals方法
Contains调用了equals
Remove调用了equals
字符串去重
list中存储的是字符串,而string的equals方法就是比的字符串值

引用数据类型去重(同姓名同年龄视为同一个人)
思路
1、对人进行描述,将数据封装进对象
2、将对象放入容器
3、去重
引用数据类型被调用了equals方法验证

集合list中remove方法调用时,调用了equals方法验证

相关代码如下
package com.javaxl;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author 小李飞刀
* @site www.javaxl.com
* @company
* @create 2019-05-13 12:03
*/
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList al = new ArrayList();
// al.add("java01");
// al.add("java02");
// al.add("java03");
// al.add("java04");
// al.add("java03");
// al.add("java03");
// System.out.println("原集合:"+al);
// System.out.println("现集合:"+singleElementList(al));
al.add(new Peroon("java01",11));
al.add(new Peroon("java02",12));
al.add(new Peroon("java03",13));
al.add(new Peroon("java04",14));
al.add(new Peroon("java02",12));
System.out.println("原集合:"+al);
System.out.println("去重集合:"+singleElementList(al));//会发现不能去重复了
al.remove(new Peroon("java03",13));
System.out.println("删除元素后集合:"+al);
}
/**
* 字符串去重
* @param al
* @return
*/
public static ArrayList singleElementList(ArrayList al) {
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext()){
Object next = it.next();
if(!newAl.contains(next)){
newAl.add(next);
}
}
return newAl;
}
}
class Peroon{
private String name;
private int age;
public Peroon() {
}
public Peroon(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Peroon){
Peroon p = (Peroon)obj;
System.out.println(this.getName()+"......equals......"+p.getName());
return (this.getName().equals(p.getName()) && this.getAge() == p.getAge());
}
return false;
}
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;
}
}
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有