@Override
public boolean retainAll(Collection c) {
// TODO Auto-generated method stub
if(c == null)
{
throw new NullPointerException("collection is null");
}
Iterator itr = c.iterator();
while( itr.hasNext())
{
if(!c.contains(itr.next()))
{
itr.remove();
return true;
}
}
return false;
}
所以基本上我想通过listA调用这个方法,它有“Hey,1,2,3,4,Bro”。在retainAll()的参数中,我有一个名为listB的arraylist集合,其中包含两个元素“Hey”和“Bro”。调用此方法后,listA应仅包含“Hey”和“Bro”。我做了一些调试,但我不知道代码在哪里出错。任何帮助都会很棒。所以调用它将如下所示
listA.retainAll(ListB)
答案 0 :(得分:3)
你正在迭代错误的列表 - 你迭代public class MapModel {
MapContract.Presenter mPresenter;
private Location mResLocation;
private static final String TAG = MapModel.class.getSimpleName();
public MapModel(MapContract.Presenter presenter) {
mPresenter = presenter;
}
public static WebServiceInterface WebServiceInterface = RetrofitServiceGenerator.create(WebServiceInterface.class);
public void queryAddress(String address) throws IOException {
WebServiceInterface .lookupAddress(Constants.GOOGLE_API_KEY, address).enqueue(
new Callback<GoogleMapModel>() {
@Override
public void onResponse(Call<GoogleMapModel> call, Response<GoogleMapModel> response) {
mResLocation = response.body().getResults().get(0).getGeometry().getLocation();
mPresenter.onSearchSuccess(mResLocation);
}
@Override
public void onFailure(Call<GoogleMapModel> call, Throwable t) {mPresenter.onSearchFailed("Search failed");
}
}
);
}
public interface WebServiceInterface {
@GET("json")
Call<GoogleMapModel> lookupAddress(@Query("key") String apiKey, @Query("address") String searchTerm);
}
}
的元素并检查它们中的每一个是否包含在c
中,所以你什么都不删除(如果你确实删除了任何内容,您将其从错误的列表中删除。)
此外,在删除应删除的第一个元素后,您不应该返回c
,因为您可能需要删除多个元素。
应该是:
true