判断ArryaList有没有重复对象的方法
2018-06-27 09:46:56来源:博客园 阅读 ()
ArrayList类是List类下一种常用的子类,如果要判断容器里面的对象是否有相等,有两种方法。
下面是自定义的一个Student类,假设容器里重复是按照对象的两个属性都相等。
/** * @author Wangchengan * */ public class Student { private String name; private int 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; } public Student(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } public boolean equals(Object obj) { //增加效率,如果是相同对象就不用比较了 if(this==obj) return true; //如果要比较的不是跟这个对象一样类型的就抛出一个运行时异常 if (!(obj instanceof Student)) { throw new ClassCastException("类型错误"); } //向下转型才能使用子类的方法 Student student=(Student)obj; return this.name.equals(student.name)&&this.age==student.age; } }
下面是判断的两种方法,先使用了字符串作为演示。
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListTest { public static void main(String[] args) { /* * ArrayList两种判断重复方法 1.遍历,使用两个循环 2.创建一个新的容器,旧容器中使用迭代器,没有则加入新容器 (其实contains方法里面也是使用了equls方法,只不过字符串的equals被复写了) */ List list=new ArrayList(); list.add("abc1"); list.add("abc4"); list.add("abc2"); list.add("abc1"); list.add("abc4"); list.add("abc4"); list.add("abc2"); list.add("abc1"); list.add("abc4"); list.add("abc2"); System.out.println(list); singleElement2(list); System.out.println(list); System.out.println("------------"); /* * ArrayList判断对象的方法 * 其实Arraylist里的contains方法是继承自Collection接口里的contains方法,使用的是equals方法 * 所以要判断对象里的属性的话,还是要复写对象类里的euals方法,同时它会自动调用 * */ List studentList=new ArrayList(); Student stu1=new Student("lisi", 20); Student stu2=new Student("wangwu", 22); Student stu3=new Student("liqing", 23); Student stu4=new Student("liuhu", 27); Student stu5=new Student("lisi", 20); Student stu6=new Student("liqing", 23); Student stu7=new Student("lisi", 20); studentList.add(stu1); studentList.add(stu2); studentList.add(stu3); studentList.add(stu4); studentList.add(stu5); System.out.println(studentList); singleObject(studentList); System.out.println(studentList); } //判断Arraylist里面有没有重复对象的方法(给对象使用) private static void singleObject(List studentList) { singleElement2(studentList); } //判断Arraylist里面有没有重复对象的方法2 private static void singleElement2(List list) { List newList=new ArrayList(); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object obj = (Object) iterator.next(); if (!newList.contains(obj)) { newList.add(obj); } } list.clear(); list.addAll(newList); } //判断Arraylist里面有没有重复对象的方法1 private static void singleElement(List list) { for (int i = 0; i < list.size()-1; i++) { Object obj_x=list.get(i); for (int j = i+1; j< list.size(); j++) { if (obj_x.equals(list.get(j))) { list.remove(j); //每次都要减去一个,因为remove后数据元素会改变 j--; } } } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JVM 怎么判断对象已经死了? 2020-06-01
- 五年多的开发经验,面试栽在了MQ上,不知道你们有没有被这 2020-05-29
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度 2020-05-20
- JVM 判断对象已死亡? 2020-05-03
- java 判断是否是字符或数字 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash