2017-07-25 55 views
1

在我adapterrecyclerView的我比較兩個列表像波紋管:自定義列表上的二進制搜索 - 安卓

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); 
    } 
} 

existImagesprivate List<ExistImage> existImages;jsonInstagramListprivate List<Node> jsonInstagramList;

如何使用binary search加快此搜索或其他方式?

回答

1

根據您的情況,這可能很簡單。

集合類中已經實現了二分搜索(鏈接到javadoc)。所以你只需調用該方法。

當然,要記住:

搜索指定列表使用二進制搜索算法的指定對象。該列表必須根據其元素的自然排序按升序排序...

這意味着您的列表應該已排序。所以,真正的答案是首先看看你當前的循環:

jsonInstagramList.get(position).getId().equalsIgnoreCase(existImages.get(i).getImageID() 

發現你根本無法將它變成二進制搜索。

換句話說:如果這個代碼找到元素太頻繁,使用二進制搜索需要它 - 那麼你必須準備數據的前期。

含義:二進制搜索在相同類型的元素的排序列表內找到。所以你首先要創建一個列表,其中包含你想要搜索的東西!

+0

如何從binarySearch使用兩個列表? –

+1

您有更新。真正的答案在這裏:你應該退後一步,看看如何/什麼二進制搜索。你的評論意味着你認爲這是一些可以應用於任何事情的神奇事物。事實並非如此。 – GhostCat