如何实现 hashCode 和 equals 方法从 ArrayList 中删除重复项

2023-12-27

我正在从数据库模型 Income 获取数据。这就是它的样子

@Table(name = "Income")
public class Income extends Model {

    @Column(name = "AmountDate")
    public String amountDate;

    @Column(name = "Amount")
    public Double amount;

    @Column(name = "Day")
    public int day;

    @Column(name = "Month")
    public int month;

    @Column(name = "Year")
    public int year;
}

在我的片段中,我从数据库获取所有收入数据。在我的 BaseAdapter 中,我想创建其中包含月份和年份的 ArrayList。它看起来像这样

array = [{6, 2018}, {6, 2018}, {7, 2018}, {7, 2018} {8, 2018}]

我想从该数组中删除重复的项目,所以它应该看起来像这样array = [{6, 2018}, {7, 2018} {8, 2018}]我将在 listview 和 onListViewItem 中显示数组中的数据,单击它将显示所选月份的所有数据。

这是我的 BaseAdapter 代码

 private class IncomeArrayAdapter extends BaseAdapter {
        private LayoutInflater inflater;
        private List<Income> incomeList;
        List<Income> listOfIncomes = new ArrayList<>();

        public IncomeArrayAdapter(List<Income> incomesList) {
            inflater = LayoutInflater.from(getActivity());
            this.incomeList = incomesList;
            for (int i = 0; i < this.incomeList.size(); i++) {
                listOfIncomes.add(this.incomeList.get(i));
            }
            Set<Income> setOfIncomes = new HashSet<>(listOfIncomes);

            listOfIncomes.clear();
            listOfIncomes.addAll(setOfIncomes);

            for (int i = 0; i < listOfIncomes.size(); i++) {
                System.out.println(listOfIncomes.get(i).month + listOfIncomes.get(i).year);
            }
        }
    }

我对java很陌生所以我的问题是如何创建新的ArrayList并从该列表中删除重复项?

编辑: 正如我被建议实施的那样equals and hashCode进入我的Income模型。 我在实现这两种方法时遇到一些麻烦。所以我也会编辑我的问题。

  public int hashCode() {
        return month + year;
    }

    public boolean equals(Object o) {
        boolean flag = false;
        return flag;
    }

我的应该如何equals and hashCode执行情况看?


大多数 IDE 都有一种自动生成哈希码和 equals 函数的方法。在 IntelliJ IDEA 中,按 Alt + Insert(或右键单击 > 生成...)

然后单击“equals() 和 hashCode()”

或者在 Eclipse 中右键单击源代码上的某处并选择: “来源”>“生成 hashCode() 和 equals()...”

无论哪种方式,它都会为您的班级生成类似以下内容的内容:

public class Income extends Model {

    public String amountDate;
    public Double amount;
    public int day;
    public int month;
    public int year;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((amount == null) ? 0 : amount.hashCode());
        result = prime * result + ((amountDate == null) ? 0 : amountDate.hashCode());
        result = prime * result + day;
        result = prime * result + month;
        result = prime * result + year;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Income other = (Income) obj;
        if (amount == null) {
            if (other.amount != null)
                return false;
        } else if (!amount.equals(other.amount))
            return false;
        if (amountDate == null) {
            if (other.amountDate != null)
                return false;
        } else if (!amountDate.equals(other.amountDate))
            return false;
        if (day != other.day)
            return false;
        if (month != other.month)
            return false;
        if (year != other.year)
            return false;
        return true;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现 hashCode 和 equals 方法从 ArrayList 中删除重复项 的相关文章

  • Hazelcast Jet 变更数据捕获

    我在我的应用程序中使用 Hazelcast 更改数据捕获 CDC 我使用 CDC 的原因是 如果使用 jdbc 或其他替代功能将数据加载到缓存中 会花费大量时间 所以CDC将在数据库和 Hazelcast Jet 之间进行数据同步 Stre
  • 为什么ArrayList没有getSize()而不是size()?

    我在一些 JSP 页面中大量使用 ArrayList 我想像这样访问 ArrayList myArrayList size 但由于对象必须符合 JavaBean 标准 其中myArrayList getMyPropertyName is m
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • 查找 ImageView 相对于其显示的图像的位置

    所以问题就在这里 我在 ImageView 中显示一个大图像 需要找到它相对于图像的位置 像这样 Image gt ImageView
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • HttpMediaTypeNotAcceptableException / HttpMediaTypeNotAcceptableException:找不到可接受的表示

    我有一个客户端正在尝试连接的 API 但是它会抛出错误 2015 09 22 04 21 44 297 org springframework web servlet mvc method annotation HttpEntityMeth
  • 解析JSON数据并将其放入gridview中

    我正在开发一个应用程序 我必须在其中解析JSON数据并且必须将它们放入自定义中gridview 它应该是这样的 到目前为止 我已经在 asynctask 中解析了 JSON 数据并获取了这些值 这是我的代码 private class ge
  • 为什么我用Java计算的结果是错误的?

    我使用这段代码来计算一些东西 但几乎在所有情况下结果都是 0 0 为什么 编译器中没有警告或错误 private void jButton1ActionPerformed java awt event ActionEvent evt try
  • Android - 有没有办法监听 GPS 是否启用或禁用

    我编写此代码是为了接收位置更新 PendingIntent launchIntent PendingIntent getBroadcast context 5000 intent 0 manager requestLocationUpdat
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • popBackStack导致反复调用fragment的oncreateView

    我有 3 个片段 A B C 我编写了一段代码来替换它们并维护 backstack public void addFragment Fragment fragmentToAdd String fragmentTag FragmentMana
  • 片段内部类应该是静态的

    我有一个FragmentActivity具有应显示的内部类的类Dialog 但我必须做到static Eclipse 为我提供了抑制错误的功能 SuppressLint ValidFragment 如果我这样做是不是很糟糕 可能的后果是什么
  • 如何列出所有已加载的 Spring bean 定义文件

    在大型企业系统中 并不总是清楚在 ApplicationContext 构建期间导入了哪些文件 有没有办法列出过程中加载的所有文件 我知道如何列出加载的属性文件 但不知道导入的 bean 文件 更新示例 文件 1 applicationCo
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 为什么我得到:没有有效的 JFX 运行时

    我有一个使用 java 1 6 编译并使用 jnlp webstart 运行的现有应用程序 如果我使用 JRE 1 6 从客户端运行此应用程序 一切都会很好 但是 当我使用 java JDK 7 编译代码并使用 JRE 1 7 67 运行客
  • 找不到 `activityViewModels()` Hilt Android

    我在我的项目中使用 Hilt 和 MVVM 我想要一个viewModel from activityViewModel在 2 个活动中使用相同的内容 但我的 Android Studio 说未解析的参考 我的应用程序 build gradl
  • Mac 上的 JavaFX WebView 字体问题

    有些网站显示乱码而不是正确的文本 它只发生在 Mac 上 For example with GMapsFX 可能与 OS X 10 11 或 10 12 有关 我用Java 1 8 0 121测试了它 此问题有任何修复或解决方法吗 就我而言
  • 如何在android中使用Room Persistence ORM工具实现created_at和updated_at列

    我该如何实施created at and updated at在Android中使用Room Persistence ORM工具的列 可以在创建或更新表中的行时自动更新时间戳 我研究了很多网站 但仍然没有找到任何可以处理的结果middlew

随机推荐

  • Mongoose 按日期查询

    我想用这样的文档结构查询 mongoDB var ExampleSchema mongoose Schema createdAt type Date default Date now validUntil Date name String
  • 具有自定义高度的自定义 UINavigationBar 会导致 UIBarButtonItem 的位置错误

    我创建了自己的 UINavigationBar 子类 以便启用高于 44 像素的自定义背景 我通过重写这两种方法来做到这一点 void drawRect CGRect rect self backgroundImage drawInRect
  • 使用java对整数进行加密

    我正在尝试使用 java security 和 javax crypto 加密 java 中的一些整数 问题似乎是 Cipher 类仅加密字节数组 我无法直接将整数转换为字节字符串 或者可以吗 做这个的最好方式是什么 我应该将整数转换为字符
  • Angular Fire - 没有 InjectionToken 的提供者(angularfire2.app.options)

    Context 我正在与Ionic 和 Angular Angularfire 和 Firebase 我已经做了一个连接成功 to the Firestore数据库我能够操纵数据 规格 Ionic CLI 6 18 1 Ionic Fram
  • Three.js 不拉伸网格纹理(图像) - 使其覆盖其容器

    我有一个容器 我使用 Three js 和网格应用图像 这就是我将网格应用到场景的方式 this els el el image el querySelector ch image lt size of container image is
  • Keras - 如何使用 KerasRegressor 执行预测?

    我是机器学习新手 我正在尝试处理 Keras 来执行回归任务 我已经实现了这段代码 基于this http machinelearningmastery com regression tutorial keras deep learning
  • 如何执行缺失值的 RMSE?

    我有一个巨大的数据集 有 679 行和 16 列 其中有 30 的缺失值 因此 我决定使用 impute 包中的函数 impute knn 来估算缺失值 并得到一个包含 679 行和 16 列但没有缺失值的数据集 但现在我想使用 RMSE
  • 未为子资源调用 JAX-RS DynamicFilter

    根据文档 应该可以使用DynamicFeature https docs oracle com javaee 7 api javax ws rs container DynamicFeature html对于资源和子资源 作为效果 我希望每
  • 从关闭的 NetworkStream 读取不会导致任何异常

    我正在尝试创建一个相当简单的客户端服务器应用程序 但为了进行通信 我想使用二进制序列化对象 通信本身看起来相当不错 但是当我关闭客户端的流时 服务器并没有真正注意到它并继续尝试读取流 服务器端 Server 类 在单独的线程中执行 监听连接
  • _AppStart.cshtml、PackageManager、WebMatrix

    我认为将 SimpleMembersihp 添加到 MVC4 Web 是一件简单的事情 并非如此 模板化代码 例如 C 非常适合支持它 但 web config 大多是不可知的 缺乏配置任何特定安全机制的元素 我正在关注 Scott All
  • 在 XSL 翻译中更改 XML 文件的命名空间

    所以我有一个输入文件 它在默认命名空间中使用我公司的命名空间 xmlns companyURL 但我希望我的输出文件使用默认命名空间以外的其他内容 xmlns cmp companyURL 所以我使用以下方法构建我的文件cmp命名空间 但我
  • numpy 数组到文件,np.savetxt

    当我使用 np savetxt file txt arr1 arr2 arr3 时 将多个 numpy 数组保存到文件的最佳方法是什么 数组按列保存 而不是按行保存 因此很难导入到 Excel 中 如何以更标准的方式保存数组 Thanks
  • 如何屏蔽文本中的信用卡号掩码?

    我的网站上有一个表格 我的客户用此表格向我发送消息 有时他们会在消息上写下信用卡号码 所以这非常关键 我想屏蔽这些信用卡号码 但卡号当然不会定期出现 示例1 1111222233334444 示例2 4444 3333 2222 1111
  • 更改传单中标记的大小

    我在传单的地图上有一个标记 var centerMarker L marker centerPoint title unselected bindLabel schools i 0 centerMarker on click selectM
  • 为什么应该在 Android 中使用自定义内容提供程序?

    使用自定义内容提供商有哪些优势 为什么这样的内容提供者优于包装 SQL 查询的普通类 内容提供程序可以从其他进程中使用 并且是 Android 上的某些机制 例如全局搜索 所需要的 还有一些可用的类可以帮助您处理内容提供 者 从而节省您管理
  • .NET 6:如何在控制台应用程序启动中使用方法重载?

    NET 6 在控制台应用程序 Startup 类中提供了样板删除功能 我尝试运行这个简单的测试代码 Console WriteLine Hello World static void Test int a int b static void
  • 对数时间并行减少

    Given n部分和 可以在 log2 并行步骤中对所有部分和进行求和 例如 假设有八个线程 有八个部分和 s0 s1 s2 s3 s4 s5 s6 s7 这可以减少log2 8 3像这样的连续步骤 thread0 thread1 thre
  • 我可以让 html.HiddenFor / Html.Hidden 创建一个 id 还是应该手动创建它?

    我这样做 它创建了一个隐藏的输入 但没有id just name 我需要id 我可以让它创建一个id also atm 我这样做 一种更干净的方法是 但除此之外 你现有的方法就可以了 如果您确实想要一个简单的语法 您可以创建一个调用 Hid
  • 如何创建 python selenium 应用程序及其驱动程序?

    我刚刚开始使用 python 和爬行 我使用selenium和beautifulsoup来解析和抓取页面 我的问题是我是否必须用它制作一个应用程序或将其部署在某些iis服务器上 或我不知道的任何其他方式 比如它是如何工作的 我不知道即使确定
  • 如何实现 hashCode 和 equals 方法从 ArrayList 中删除重复项

    我正在从数据库模型 Income 获取数据 这就是它的样子 Table name Income public class Income extends Model Column name AmountDate public String a