在我的adapter
recyclerView
我比较两个列表如下:
for (int i = 0; i < existImages.size(); i++) {
if (jsonInstagramList.get(position).getId().equalsIgnoreCase(existImages.get(i).getImageID())) {
holder.insertedProduct.setVisibility(View.VISIBLE);
break;
} else {
holder.insertedProduct.setVisibility(View.GONE);
}
}
existImages
为private List<ExistImage> existImages;
,jsonInstagramList
为private List<Node> jsonInstagramList;
。
如何在此搜索或其他方式中使用binary search
加快速度?
答案 0 :(得分:0)
根据您的具体情况,这可能非常简单。
在Collections类中已经实现了二进制搜索(链接到javadoc)。所以你只需要调用该方法。
当然,请记住:
使用二进制搜索算法在指定列表中搜索指定的对象。列表必须根据其元素的自然顺序按升序排序......
这意味着您的列表应该已经排序。所以,真正的答案是首先看看你当前的循环:
jsonInstagramList.get(position).getId().equalsIgnoreCase(existImages.get(i).getImageID()
发现您无法将其转换为二进制搜索。
换句话说:如果查找元素的代码被频繁调用以至于需要使用二进制搜索 - 那么您必须提前准备您的数据。
含义:二进制搜索在相同类型的元素的排序列表中找到键。因此,您首先必须创建包含您要搜索的内容的列表!