当前位置: 首页 > 知识库问答 >
问题:

在Java对象列表中搜索字段[副本]

商飞龙
2023-03-14

在我正在设计的应用程序中,我有一个名为shop的自定义对象列表。这里可以看到Shop类。

public class Shop extends Object {

    private String title = "";
    private List<HashMap<String, String>> branchDetails = new ArrayList<>();
    private String description = "";
    private String imageLink = "";
    private String webLink = "";

    public Shop() {

    }
}

在我的应用程序中,我创建了一个列表 对象,并用1500个Shop对象填充它。

我已经覆盖了shop.java中的equals和hashcode方法,并且可以使用list#contains方法来验证列表中包含一个具有匹配weblink的对象,但无法获取该对象的索引。

equals和hashcode方法:

public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Shop shop = (Shop) o;

    return getWebLink().equals(shop.getWebLink());

}

@Override
public int hashCode() {
    return getWebLink().hashCode();
}

要使用它,我要用webLink创建一个新的商店,我想查询

Shop shop = new Shop();
shop.setWebLink("http://somelink.com");

shopsList.contains(shop) //returns true if weblink string matches one from list of shops

共有1个答案

牧飞鹏
2023-03-14

检查Collections API的方法indexOf,这就是您要查找的。

 类似资料:
  • 问题内容: 我有点迷茫,无法做到最快。我有一大堆具有基本变量属性的对象(带有getters / setters方法),我需要在此列表中进行搜索以找到列表中与给定参数匹配的对象 我已经找到了如何进行常规列表搜索的方法,但是我需要进行搜索,例如搜索列表中每个对象的调用getName()的结果的值,并获取结果与我的输入匹配的对象。 如下所示,第三个参数是方法调用的结果,第二个是我要查找的结果。 任何建议

  • 问题内容: 假设我正在创建一个简单的类以类似于C样式的结构工作,只保存数据元素。我试图弄清楚如何在对象列表中搜索属性等于某个值的对象。下面是一个简单的示例,以说明我要执行的操作。 例如: 我将如何搜索myList列表以确定它是否包含n == 5的元素? 我一直在谷歌搜索和搜索Python文档,我想我可以通过列表理解来做到这一点,但是我不确定。我可能还要补充一点,我必须使用Python 2.4.3,

  • 问题内容: 我有一个对象列表,列表很大。对象是 现在,我必须在列表中搜索对象的特定值。假设 我必须返回那些对象(我的搜索并不总是基于value3) 清单是 有效的方法是什么? 谢谢。 问题答案: 您可以尝试使用Apache Commons Collections。 有一个CollectionUtils类,允许您通过自定义谓词选择或过滤项目。 您的代码将如下所示: 更新: 在 java8中 ,使用

  • 我有一个对象列表,列表很大。对象是 现在我必须在列表中搜索一个对象的特定值。假设我必须返回这些对象(我的搜索不总是基于value3) 该列表为

  • 我试图根据用户输入找到一个特定的对象。用户需要输入姓名和性别,然后程序应该搜索ArrayList,查看是否有匹配的姓名和性别。ArrayList中的对象有3个实例变量,但程序只搜索2个。如何在ArrayList中只搜索选定的几个特征? 在我的项目中,我有: 其中,nameList是ArrayList的名称,getName()是返回存储在对象中的名称的方法的名称,getGender()是返回存储在对

  • 每次文本更改后都会调用onQueryTextChange,但搜索结果只显示一次。当输入和时,RecyclerView显示和(必须按Enter才能启动是否正常?),但当我输入时,显示的项目保持不变。