【问题标题】:Remove duplicate values from a List<String> in Android [duplicate]从 Android 中的 List<String> 中删除重复值 [重复]
【发布时间】:2015-06-20 22:59:38
【问题描述】:

我有一个列表,它有重复的值,我想从中删除重复的值,只过滤单个值,

当前输出为{a, a, a, b, b, c, c, d, d, d, d},我想更改它并获得{a, b, c, d} 的输出。

这是我现在用来获取当前输出的代码,

List<String> pickupOutlet = new ArrayList<String>();
        @Override
        public void onTaskCompleted(JSONArray responseJson) {
            // TODO Auto-generated method stub
            try {

                for (int i = 0; i < responseJson.length(); ++i) {
                    JSONObject object = responseJson.getJSONObject(i);

                    Log.i("OutletName", object.getString("OutletName"));
                    pickupOutlet.add(object.getString("OutletName"));

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

谁能帮我实现它。

更新

当前代码

这对我有用

                    for (int i = 0; i < responseJson.length(); ++i) {
                        JSONObject object = responseJson.getJSONObject(i);

                        if (!pickupOutletDuplicates.contains(object.getString("OutletName"))){
                        Log.i("OutletName", object.getString("OutletName"));
                        pickupOutletDuplicates.add(object
                                .getString("OutletName"));
                        }
                    }

【问题讨论】:

  • 你可以用google搜索这个问题或者尝试使用HashSet

标签: java android json


【解决方案1】:

您可以使用Set,例如HashSet。

【讨论】:

    【解决方案2】:

    检查您的列表是否已经包含该值:

    JSONObject object = responseJson.getJSONObject(i);
    
    Log.i("OutletName", object.getString("OutletName"));
    if (!pickupOutlet.contains(object.getString("OutletName"))
       pickupOutlet.add(object.getString("OutletName"));
    

    【讨论】:

    • 你能检查更新的问题吗
    • @modabeckham 什么意思,它不起作用。 oyu 能否提供一个可运行的示例以便我自己尝试?
    • 我能够得到输出
    【解决方案3】:

    检查pickupOutlet是否包含重复值

    if(!pickupOutlet.contains(object.getString("OutletName"))){
    pickupOutlet.add(object.getString("OutletName"));
    }
    

    【讨论】:

      【解决方案4】:

      只需使用 Set 而不是 List。因为 Set 只包含唯一值。而列表包含重复值。

              Set<String> pickupOutlet = new HashSet<String>();
      
              @Override
              public void onTaskCompleted(JSONArray responseJson) {
                  // TODO Auto-generated method stub
                  try {
      
                      for (int i = 0; i < responseJson.length(); ++i) {
                          JSONObject object = responseJson.getJSONObject(i);
      
                          Log.i("OutletName", object.getString("OutletName"));
                          pickupOutlet.add(object.getString("OutletName"));
      
                      }
      
                  } catch (JSONException e) {
                      e.printStackTrace();
                  }
              }
      

      【讨论】:

        【解决方案5】:
          List<String> duplicateList = (List<String>) Arrays.asList("a" ,"a" ,"a" , "b", "b", "c","c","d","d","d","d");
        
          duplicateList.size());
          System.out.println(duplicateList);
        

        //ArrayList转HashSet去重复

        HashSet<String> listToSet = new HashSet<String>(duplicateList);
        

        //创建无重复值的Arraylist

         List<String> listWithoutDuplicates = new ArrayList<String>(listToSet);
        
        System.out.println("size of ArrayList without duplicates: " + listToSet.size()); 
        
        System.out.println(listWithoutDuplicates);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-02
          • 2015-07-10
          相关资源
          最近更新 更多