从列表中删除重复项?

Posted

技术标签:

【中文标题】从列表中删除重复项?【英文标题】:remove duplicates from List? 【发布时间】:2021-04-02 10:20:15 【问题描述】:

我从适配器中的 API 获取重复项,但我想从我的适配器中删除这些重复项,并在知道如何打印后将其打印出来?提前致谢。 得到:在我的卡片视图中重复行但通过 API。 想要:只想打印一次并删除那些重复项。

我的适配器:

    @Override
    public void onBindViewHolder(@NonNull catView holder, int position) 

        holder.id.setText(oilResponses.get(position).getId());

       
    @Override
    public int getItemCount() 
        if (oilResponses.size() != 0) 
            return oilResponses.size();
        
        return 0;
    

主活动:

    private void oilList() 
        Api.getClient().do_oil(CAR_ID)
                .observeOn(androidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Observer<List<OilResponse>>() 

                    @Override
                    public void onSubscribe(Disposable d) 

                    

                    @Override
                    public void onNext(@NotNull List<OilResponse> responses) 
                        oilAdapter = new OilAdapter(responses);
                        oilRecycler.setAdapter(oilAdapter);
                        

                    

                    @Override
                    public void onError(@NotNull Throwable e) 
                    
                    

                    @Override
                    public void onComplete() 

                    
                );
    

【问题讨论】:

你好 Zaidi,欢迎来到 ***。恐怕你的问题代码有点多,请尝试创建一个minimal, reproducible example。 @itaishz 感谢您的回复我已经更新了我的问题。 为什么不按 id 过滤呢? 您好,实际上没有过滤我的卡片视图中的项目仅显示 ID,但我从 API 获取重复项目,所以我想避免这些重复项。 【参考方案1】:

您可以尝试将它们保存在 Set 而不是 List 中,这基本上是相同的,但在一组中每个对象都可以保存一次,因此即使您也不能有重复项我愿意。

【讨论】:

您好,我尝试将 List 转换为 Set,但众所周知,在 BindViewHolder 上的适配器中,我们使用 list.get(position).getId();但是使用 Set 我无法得到它。

以上是关于从列表中删除重复项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用列表理解从列表中删除重复项? [复制]

从 Ocaml 中的列表列表中删除重复项?

如何从我的列表中删除重复项? [复制]

如何从Java列表中删除重复项

如何从列表 Dart 中删除重复项 |扑

使用 Guava 从列表中删除重复项