在我正在设计的应用程序中,我有一个名为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() {
}
}
在我的应用程序中,我创建了一个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
答案 0 :(得分:1)
检查Collections API的方法indexOf,它是您正在寻找的内容。
答案 1 :(得分:1)
使用indexOf()
获取元素索引。
返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。
请注意,如果您有多个有意义的平等商店,则会返回第一个匹配索引。