在Java中的对象列表中搜索字段

时间:2016-04-18 16:39:30

标签: java

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

Shop.java

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() {

    }
}

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

现在我想搜索List并找到一个商店的索引,其中包含一个与字符串匹配的“Weblink”。即我想以与数据库相同的方式查询List。有没有办法在不构建和填充数据库的情况下执行此操作?

我已经覆盖了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

2 个答案:

答案 0 :(得分:1)

检查Collections API的方法indexOf,它是您正在寻找的内容。

答案 1 :(得分:1)

使用indexOf()获取元素索引。

返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。

请注意,如果您有多个有意义的平等商店,则会返回第一个匹配索引。