判断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晓码阁 版权所有