当前位置: 首页 > 面试题库 >

在自定义ArrayList中仅添加一次项目

松英喆
2023-03-14
问题内容

我已经这样创建了自己的自定义ArrayList:

public class Points {
    String hoodName;
    Double points;
    Integer hoodId;
    public Points(String hN, Double p, Integer hI){
        hoodName = hN;
        points =p;
        hoodId = hI;
    }

    public Double getPoints() {
        return points;
    }

    public Integer getHoodId() {
        return hoodId;
    }

    public String getHoodName() {
        return hoodName;
    }
}

当我从JSON API添加数据时,它会多次添加项。我尝试过此代码仅一次添加项目:

if (!points.contains(jsonObject.getString("hood_name"))) {
                                    points.add(new Points(jsonObject.getString("hood_name"), jsonObject.getDouble("points"), jsonObject.getInt("hood_id")));
                                }

如果还尝试这样做:

if (!points.contains(Points(jsonObject.getString("hood_name"), jsonObject.getDouble("points"), jsonObject.getInt("hood_id")))) {
                                    points.add(new Points(jsonObject.getString("hood_name"), jsonObject.getDouble("points"), jsonObject.getInt("hood_id")));
                                }

当我使用ArrayList时此代码有效,但当我使用ArrayList时此代码ArrayList<Integer>无效ArrayList<Points>

谁能解释我如何避免清单重复?


问题答案:

正如您在评论中提到的,Order无关紧要,我将有一个HashSet<String>to存储并检查hood_name和。如果要object通过输入来获取,则hood_name可以使用HashMap<String,Point,它可以O(1)及时返回对象。

因此,您需要创建一个HashSet<String>,以跟踪中存在hood_name的所有对象ArrayList<Points>

HashSet<String> all_ids=new HashSet<String>();

if (!all_ids.contains(jsonObject.getString("hood_name"))) 
{
    points.add(new Points(jsonObject.getString("hood_name"), jsonObject.getDouble("points"), jsonObject.getInt("hood_id")));
    all_ids.add(jsonObject.getString("hood_name")); //You need to add it to set as Now it exists in the list.                     
}

此外,如果您只想用来ArrayList<Point>执行此任务,则可以在类中重写equals(ObjectE)hashCode()方法Point



 类似资料:
  • 问题内容: 大家好。我正在制作一个词汇应用程序,需要在其中创建一个 (或ArrayList)。为此,我创建了以下代码(仅作为示例): 我还尝试了以下方法: 他们两个都将该项目添加到列表中,但是在调试时,我发现它的数组有12个对象,如下所示: 我的问题是我不能拥有这些空项目,因为此新列表是上的键,因此任何更改都将导致异常,因为该键将不存在。 使用调试器的列表(tempSOLUTION)详细信息的屏幕

  • 问题内容: 下面有一个for循环代码。我通过调用一个自定义显示函数发现aBook arrayList对象仅添加了最后一个类对象三次。为什么会这样呢? 这是我的LiFiAddressBook类 } 问题答案: 由于使用static关键字,每次 调用构造函数时,旧值都会被新值覆盖,并且在打印列表中的元素时,LiFiAddressBook类的对象变量将指向相同的对象。因此打印相似的对象。 需要明确的是,

  • null 0.0.1-快照 _remote.repositories Maven-metadata-local org-utility-0.0.1-snapshot.jar org-utility-0.0.1-snapshot.pom org-utility-0.0.1-snapshot-jar-with-dependencies.jar 因此,我能够将jar“retrieve org-utili

  • 我有一个自定义插件,允许客户向订单中添加自定义信息。 项目被添加到购物车,自定义数据显示在购物车页面上。但是,自定义信息不会转移到后端的订单页面。理想情况下,我也希望将自定义数据添加到客户的订单电子邮件中。 目前的代码如下: 我试图修改我在网上找到的一段代码片段,并将其添加到上述代码中。但是,当我实现此功能时,购物车完全崩溃: 任何帮助都将不胜感激。我没有太多的编码经验,我正在努力找到一种方法来实

  • 是否有一个时间格式来指定这样的日期序列到轴在D3和v4?

  • 我想在WordPress Rest API中添加自定义endpoint。我能够通过创建简单的插件来获取此代码的帖子ID,标题,内容,slug,类别和featured_image。我在代码中获得了类别ID。我想要类别名称,我试图通过来执行此操作,但没有理解它。如何通过自定义终结点获取类别名称,作者姓名和作者个人资料图像。我也是wordpress的初学者。我参考了文档,但不明白该怎么做。将其写w_po