比较两个列表返回false(android)

时间:2019-05-02 09:45:50

标签: android

我正在尝试比较两个列表。第一个列表具有来自class1开关的值,而另一个列表我正试图从站点(class2)检索它。我正在尝试比较这两个列表,但是if语句返回否。例如 我正在检查大豆开关,当我扫描条形码时,提取的列表中有大豆,但文本未返回。请帮帮我!

这是我编写的代码。 Class1

   public ArrayList<String>  soy2= new ArrayList<String>();
    Switch soy;
.....................

 if (soy.isChecked()) {

           checked();
     }
      else {
            textView.setText("blahblah");

      }


        public void checked() {

            soy2.add("Soy");
            soy2.add("Σόγια");
            soy2.add("soja");
            soy2.add("Soybeans");
            soy2.add("soybeans");
            soy2.add("en:soybeans");
           //checkedAllergens.add(soy2);


            }

        public  ArrayList<String>  getList() {
            return soy2;
        }

Class2


public Manage checkd;
         String fetchedAllergens=new String();
    List<String> fetchedAllergensList = new ArrayList<String>();
    .......................

     public void test() {
        checkd = new Manage();

       ArrayList<String> list = checkd.getList();
      System.out.println(list);
    System.out.println(fetchedAllergensList);

         if(fetchedAllergensList.contains(list))
        {


            testtxt.setText("yes");
        }
        else
        {

            testtxt.setText("no");
        }

// Test方法是由点击侦听器调用的,我从第2类中获得了带有以下代码的列表



        protected String doInBackground(String... strings) {

            final String barcode = strings[0];
            @Nullable
            String allergens = null;
            try {
                final String jsonStr = Jsoup.connect(
                        "https://world.openfoodfacts.org/api/v0/product/" + barcode + ".json")
                        .ignoreContentType(true)
                        .execute()
                        .body();

                final JSONObject jsonObj = new JSONObject(jsonStr);
                if (jsonObj.has("product")) {
                    JSONObject productNode = jsonObj.getJSONObject("product");

                    allergens = productNode.getString("allergens");

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

            fetchedAllergens=allergens;
            fetchedAllergensList = Arrays.asList(fetchedAllergens.split(","));
            System.out.print(fetchedAllergensList);
            return allergens;
        }

1 个答案:

答案 0 :(得分:0)

这里if(fetchedAllergensList.contains(list))

.contains()希望列表中的元素不是arraylist

例如

fetchedAllergensList.contains("Soy")

如果要比较两个列表,请尝试

listA.containsAll(listB) && listB.containsAll(listA)

compare lists if equal

要检查list2是否包含list1中也存在的元素

public boolean elementExist(ArrayList<String> list1, ArrayList<String> list2) {
   for (int i= 0; i < list2.length() i++) {
       if (list1.contains(list2[i])) {
        // element list2[i] exist in list1
        return true;
       }
   }
   return false;
}

如果list2的元素也位于list1中,则此方法将返回true