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--;
} }
} } }

判断ArryaList有没有重复对象的方法的更多相关文章

  1. List集合去除重复对象及equals()、hashCode()方法的作用

    原文:https://blog.csdn.net/freelander_j/article/details/52211010 在java中,要将一个集合中重复的对象除去,如果这个集合中的数据类型是基本 ...

  2. 使用ObjectInputStream的readObject()方法如何判断读取到多个对象的结尾

    摘自http://blog.csdn.net/fjdingsd/article/details/46765803 使用ObjectInputStream的readObject()方法如何判断读取到多个 ...

  3. 为Array对象添加一个去除重复项的方法

    输入例子 [false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN].uniq() 输出例子 [false, true, unde ...

  4. js数组中去除重复对象及去除空对象的方法

    (function(){//去除数组中重复对象 var unique = {}; arr.forEach(function(a){ unique[ JSON.stringify(a) ] = 1 }) ...

  5. javaScript定义对象的方法

    转自souhu新闻http://news.sohu.com/20110215/n279335637.shtml? javascript定义对象的几种简单方法 1.构造函数方式,全部属性及对象的方法都放 ...

  6. Python判断列表是否已排序的各种方法及其性能分析

    目录 Python判断列表是否已排序的各种方法及其性能分析 声明 一. 问题提出 二. 代码实现 2.1 guess 2.2 sorted 2.3 for-loop 2.4 all 2.5 numpy ...

  7. [UE4]复制引起的重复对象

    一.在角色的BeginPlay事件中,在角色正前方1米到2米处生成一立方体. 二.开启2个玩家,第一个创建是服务器端,第二个窗口是客户端.可以看到:服务器端窗口创建了2个灰色的立方体,客户端却创建了4 ...

  8. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  9. JavaScript (内置对象及方法)

    JavaScript中的对象分为3种:内置对象.浏览器对象.自定义对象 JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean... 对象只是带有属性 ...

随机推荐

  1. [leetcode.com]算法题目 - Pow(x, n)

    Implement pow(x, n). class Solution { public: double pow(double x, int n) { // Start typing your C/C ...

  2. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  3. html-文件上传设置accept类型延时问题

       今天在做文件上传时,采用了jQuery的upload插件,使用过程中发现了一个很有意思也很头疼的问题. 上传按钮,第一次点击时瞬间就可以打开文件选择框,之后再点击则需要等待恐怖的8s以上. 百度 ...

  4. 设计模式《JAVA与模式》之调停者模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从 ...

  5. CSS之浏览器默认样式问题

    今天自己写css样式时,其中用到了<ul>标签,设置了一系列效果后运行,发现位置与设置有出入.chrome上打开检查项,发现<ul>标签的styles底部多了以下一段: ul, ...

  6. POJ 2887

    #include <iostream> #include <string> #define MAXN 2000 using namespace std; struct node ...

  7. Django 模版过滤器

    模版常用过滤器 在模版中,有时候需要对一些数据进行处理以后才能使用.一般在Python中我们是通过函数的形式来完成的.而在模版中,则是通过过滤器来实现的.过滤器使用的是|来使用.比如使用add过滤器, ...

  8. C#递归方法遍历目录及子目录

    众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对 ...

  9. tensorflow进阶篇-4(损失函数2)

    Hinge损失函数主要用来评估支持向量机算法,但有时也用来评估神经网络算法.下面的示例中是计算两个目标类(-1,1)之间的损失.下面的代码中,使用目标值1,所以预测值离1越近,损失函数值越小: # U ...

  10. 如何让你的网站用上免费的HTTPS

    因为之前网站上被注入了广告,再百般尝试之后最后还是使用了HTTPS解决了. 在实现HTTPS的时候最关键的就是证书. 证书的质量觉得了你被多少浏览器所信任. 证书的价格也就蹭蹭蹭往上涨了. 这里推荐一 ...