2017-01-09 10 views
0

私はArrayListを扱っています。ここでは、Arraylistから同様の値を持つオブジェクトを削除したいと考えています。私は多くのソリューションをstackoverflow上に投稿したが、何かがコードが動作していないために私のコードで間違っています。私はdupliactesのリストを取得しています。ArrayListと似た値を持つオブジェクトを削除する

public class StateCityModel { 

    private String id ; 
    private String code ; 
    private String name ; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getCode() { 
     return code; 
    } 

    public void setCode(String code) { 
     this.code = code; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public boolean equals(Object obj) { 

     if (!(obj instanceof StateCityModel)) 
      return false; 

     return id.equals(((StateCityModel) obj).getId()); 

    } 

    @Override 
    public int hashCode() { 
     return (id == null) ? 0 : id.hashCode(); 
    } 
} 

コードは、同様の値を持つオブジェクトを削除するのArrayListに

businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) { 
businessTypeObj = clubsList.get(position); 
        selectedBusinessTypeList.add(businessTypeObj); 
       } 

      } 
     }); 

コード値を追加します。

は、ここに私のコードです。

Set<StateCityModel> unique = new LinkedHashSet<StateCityModel>(selectedBusinessTypeList); 
      selectedBusinessTypeList = new ArrayList<StateCityModel>(unique); 

コードの上に行った後、私はselectedBusinessTypeListで同様の値を持つオブジェクトを取得しています。

私に助けてください、私は上記のコードで何が間違っているかを見つけることができません。

+0

「同様の値を」どのように類似しました?重複排除すると予想される値の例を示してください。 –

+0

@AndyTurner "類似の値を持つ" - >フィールドが同じ値を持つ2つのオブジェクトを含むリスト。例:fileds(id、code)を持つobj1とobj2の2つのオブジェクトがあり、両方のオブジェクトのidとcodeの値が同じです。 –

+0

@AndroidDev以下の回答を確認してください! –

答えて

2

また、このよう

ステップ1で行うことができます。その後には、ArrayListから重複要素を削除する必要はありませんので、唯一同じではありませんのidの配列リストでそれらのデータを挿入します。

businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) { 
    businessTypeObj = clubsList.get(position); 
         selectedBusinessTypeList.add(businessTypeObj); 
        } 

       } 
      }); 

businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) { 
       } 

    StateCityModel stateCityModel = new StateCityModel(); 
    stateCityModel = clubsList.get(position);; 

    if (!selectedBusinessTypeList.contains(stateCityModel)){ 
     selectedBusinessTypeList.add(stateCityModel); 
    } 

} 

}によってそれを置き換え)。

ステップ2:これは

Set<StateCityModel> unique = new LinkedHashSet<StateCityModel>(selectedBusinessTypeList); 
      selectedBusinessTypeList = new ArrayList<StateCityModel>(unique); 
+1

OPがこのアプローチを自分の代わりに使用したい理由を説明してください。 –

+0

@AndyTurnerはあなたが実際に尋ねたいものを手に入れませんか? –

+2

さて、あなたは、「書くのではなく、これを書いてください」と言っているのですが、実際に*なぜ*書くべきではないのですが、代わりにこれを書くべきです。あなたは「人間に魚を教える」ことではなく、ここに「人間に魚を与えている」。問題を説明し、ソリューションがそれを修正する理由を説明します。 –

0

を必要としない削除私はあなたが、リスト内の重複する値が右見ていると思いますか? selectedBusinessTypeListの参照が変更されています。新しいselectedBusinessTypeListを渡すことによって、新しいアダプタを作成することによっても変更するアダプタと再びListViewのためにそのアダプタを設定することonClickの内部

+0

彼は既に重複を削除する目的でHashSetバリアントを使用しています。 – cubrr

0

あなたはライン以下で値を追加するためのコードを置き換えることができます。

businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
     businessTypeObj = clubsList.get(position); 

     if (!selectedBusinessTypeList.contains(businessTypeObj)) { 
      selectedBusinessTypeList.add(businessTypeObj); 
     } 
    } 
}); 
関連する問題