gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:36:51 24 4
gpt4 key购买 nike

我已经像这样制作了自己的自定义 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<Integer> 时,此代码有效但不是在我使用 ArrayList<Points>

任何人都可以向我解释如何避免列表重复吗?

最佳答案

正如您在评论中提到的顺序无关紧要,我会得到一个 HashSet<String>存储和检查 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(Object E)hashCode() Point 中的方法类(class)。有关详细信息,请参阅 this .

关于java - 在自定义 ArrayList 中仅添加一次项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com