我在java中有两个列表,我需要删除重复项。一个列表包含一个包含三个字段的类(UrlInfo),另一个包含一个字符串列表。我需要将字符串列表与类中的字段进行比较,并从包含该类的列表中删除重复项。
这就是我现在所拥有的。
String urlString;
for (UrlInfo url : urlClass) {
urlString = url.getUrl();
for (int i = 0; i < storedUrlList.size(); i++) {
if (urlString.equals(storedUrlList.get(i))) {
urlClass.remove(url);
}
}
}
这对我来说非常缓慢。我将使用的列表将包含超过100,000个元素。
答案 0 :(得分:0)
我首先迭代List检查它们是否与List匹配,如果是,我将它们存储在List中,然后像这样调用removeAll():
@Override
public void onClick(View view, int position) {
SearchVehicleResponse.PromotionDetail promotionDetail = mPromoList.get(position);
if(hasActivity())
PromoCodeDialogFragment.newInstance(promotionDetail.promotionOffer, mBinding.vehicleId.getText().toString()).show(getActivity().getSupportFragmentManager(), "promo");
}
答案 1 :(得分:0)
由于要比较的列表storedUrlList
是字符串列表,因此您可以使用方法List#contains(Object)
来实现比较,并从原始列表urlClasses
中删除元素。
在Java 7中:
ListIterator<UrlClass> iterator = urlClasses.listIterator();
while (iterator.hasNext()) {
UrlClass u = iterator.next();
if (storedUrlList.contains(u.getUrl())) {
iterator.remove();
}
}
在Java 8中:
urlClasses.removeIf(u -> storedUrlList.contains(u.getUrl()));