如何在Java

时间:2018-01-26 07:44:26

标签: java linked-list

@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)

1 个答案:

答案 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